tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【git】既存のディレクトリやソースをgit管理化にしてリモートに紐づける流れメモ - git init、git remote add origin

はじめに

リモート(githubなど)にはリポジトリがある、
ローカルにはgit管理されてないディレクトリやソースがある、な状況で
そのローカルディレクトリをgithubリポジトリに紐づけるというだけのメモ

たまにはこういうおさらいネタを、と。

アジェンダ

アジェンダ作るほどでもないですが一応

  1. 対象ディレクトリをリポジトリ化する
  2. commitするユーザ情報を追加しておく
  3. リモート情報を取得する
  4. testブランチ作ってカラcommitで追加確認

1. 対象ディレクトリをリポジトリ化する

※ 紐づけたいディレクトリに移動
$ cd /path/to/dir

※ リポジトリ化する
$ git init

※ この時点で`.git`というディレクトリができてリポジトリとして管理すべき情報などが作られます
$ ls -al 
drwxr-xr-x  10 hoge  hoge  340  2  9 12:11 .git

※ また、この時点でconfigに最低限のリポジトリ情報が追加される
$ cat .git/config 
----
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
  precomposeunicode = true
----

※ リポジトリ情報追加
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git

※ このときにリモートリポジトリの情報が追加される
$ cat .git/config 
----
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
  precomposeunicode = true
[remote "origin"]
  url = git@github.com:ユーザ名/リポジトリ名.git
  fetch = +refs/heads/*:refs/remotes/origin/*
----

補足

今回はすでにディレクトリやソースがある前提なので
最初にcdコマンドで対象ディレクトリへ移動しましたが、
新規でディレクトリから作る場合、git init ディレクトリ名とすることで
ディレクトリを新規に作成しつつgit管理化に置くこと(.gitも作られる)もできます

2. commitするユーザ情報を追加しておく

新規のときくらいにしかやらないので忘れがちですが、念のため最初にauthor情報も登録しておきます。
これを忘れると意図しないユーザ名でpushしちゃう時が多いんですよね。

※ 全体の設定をしたいとき
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

※ リポジトリ(ディレクトリ)ごとにauthorを登録したいとき
$ git config user.name "Your Name"
$ git config user.email "you@example.com"

※ --globalつけずに設定したときのconfig
$ cat .git/config 
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = git@github.com:ユーザ名/リポジトリ名.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[user]
  name = tweeeety
  email = tweeeety@tweeeety.com

3. リモート情報を取得する

いきなりカラcommit&pushして試してみてもいいんですが、その際にbranchを切りたいですよね。
branchを切るためには元になるbranch(masterなど)が欲しいところ。
そのためにまずはリモート情報を取得します

※ 試しにgit branchしてみると何も出てきません
$ git branch

※ git statusはこのタイミングでディレクトリにあるファイルがすべて差分として表示されます
$ git status
- いろいろでてくる -

$ git fetch
remote: Counting objects: 60272, done.
remote: Compressing objects: 100% (18523/18523), done.
remote: Total 60272 (delta 38835), reused 57467 (delta 36274)
~ 省略 ~ 

$ git pull origin master
From git@github.com:ユーザ名/リポジトリ名.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.

$ git branch
* master

testブランチ作ってカラcommitで追加確認

ブランチを切ってから、カラのcommit&pushしてpullrequest出してみることで確認します。
masterにも影響ないですしpull req消せばいいだけですしね。

※ 適当なブランチを切る
※ カラのcommitをしてpull req出す
$ git commit --allow-empty -m 'created PR'
$ git push -u origin master

まとめ

簡単なメモを書きたくなったので書いてみた

【mysql】ソースから入れるmysql関連でlibtoolやautomakeが入ってなくてコンパイルエラーなときのメモ

はじめに

centosにソースからのmysqlmysql-pluginな環境を作っているときにコンパイルエラーになったのでメモ

エラーと対処法

主にHandlerSocketを入れたときって感じですね。
対処法というかまんま入れるだけです。

libtool

エラー
$ ./autogen.sh
Searching libtoolize...
  FOUND: libtoolize -> libtoolize
Searching aclocal...
which: no aclocal in (/home/hoge/perl5/perlbrew/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hoge/bin)
  WARNING: Cannot Found aclocal... input aclocal command
入れる
$ cd /usr/local/src
$ sudo wget http://ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz
$ sudo tar xvzf libtool-1.5.26.tar.gz
$ cd libtool-1.5.26
$ sudo ./configure --prefix=/usr
$ sudo make
$ sudo make install

automake

エラー
$ sudo ./autogen.sh
Searching libtoolize...
which: no libtoolize in (/home/hoge/perl5/perlbrew/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hoge/bin)
  WARNING: Cannot Found libtoolize... input libtool command
入れる
# 入ってないことを確認
$ rpm -ql automake
package automake is not installed
 
# インストール
sudo yum -y install automake

【git】git cloneで作成するディレクトリ名を指定したりリビジョンを指定したり

はじめに

git cloneはリポジトリをローカルに複製したいときに使いますが
git clone リポジトリのパスみたに行うとリポジトリのパスで指定したまんまディレクトリが作成されます。
まぁ当たり前ですね。

しかし、落としてきたリポジトリのディレクトリ名を変更したいときも結構あるんですよね。
そんなときのメモ

やりかた

やりかたは簡単。下記のように打つだけです。

$ git clone [取得したいリポジトリのURL] [指定したいディレクトリ名]

補足

また、git cloneではリポジトリの履歴情報含めて複製しますが、
もし最新のソースのみ取得して使えればいいや的なときは--depthオプションでリビジョン数を指定してあげます。

$ git clone --depth 1 [取得したいリポジトリのURL]

おわり

こんな些細なことも忘れちゃうのでメモっておく。。

【vim】vimでvimrcを読み込まずにデフォルト設定で起動する方法 - `-u NONE`や`-u NORC`や`-noplugin`

はじめに

タイトルの通りですがvimrcを読み込みたくないときに使える方法(オプション)です

どんなときに使うの?

たとえば、こんなとき

  • vimについて何か読んで試そうと思ったら動かない
  • これって自分の設定のせいかな?いったんoffって試してみよう
  • でも.vimrcをわざわざ名前やパスを一次変えてとかはさすがに面倒だし...

みたいなときに使えます

やりかた

やりかたは状況によって少し違うんですが鉄板のものをまずは載せておきます

$ vim -u NONE -N ファイル名

これでvimrcやプラグインの設定を読み込まずに起動できます。

説明

簡単に説明です

  • -u NONE フラグ
    • Vim起動時にvimrcを読み込まないように伝えるもの
    • プラグインも無効化される
    • ③ vi互換モードに退行して便利な機能の多くも利用できなくなってしまう
  • -N フラグ
    • ① compatibleをオフに設定する
    • ② つまり、上記の-u NONEの③によってcompatibleになってしまうのを nocompatible (Vimの拡張を有効)にする

他にもある?

やりかたの項で状況によって少し違う と書きましたがもう少し細かく見てみます。

vimの起動時の設定に関しては大きく下記の2つにわける事ができます

↑に出てきた vim -u NONE -N は上記2つともをOFFにするものです。
なので、両方、片方のそれぞれをON/OFFにするやり方という意味だと下記のような感じにわけられます

引数 vimrc プラグイン
無し ON ON
-u NONE OFF OFF
-u NORC OFF ON
-noplugin ON OFF

参考

まとめ

vimの機能を一時切ってデフォルトで表示したいときってたまーにあるので
忘れたらまた自分の記事を見返します(><)

ファイルの先頭にハイフン(-)がつくファイルをrmコマンドで削除するには?メモ - オプションと勘違いされて"illegal option"と言われてしまう

はじめに

よく考えたらすごく初歩的なのですが一瞬戸惑ったのでメモ

事象

タイトルのとおりですが、バッチやスクリプトなどでファイル名の作成をミスって
誤って先頭にハイフンがついたファイルを作成してしまうことはあるはあると思います。
そんなときに普通にrmで消そうと思うとこうなります

# 擬似的にハイフン(-)つきファイルができてしまったていを作る
$ echo 'test' > -file

# 確認
# ls -l
-rw-r--r--   1 hoge  hoge        5  1 15 22:45 -file


# 消そうとしてもオプションと感慨されて消せない
$ rm -file
rm: illegal option -- l
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

対処法

対処方法は2つあります

  1. ディレクトリまで指定する
  2. 連続ハイフン(--)を使用する
1. ディレクトリまで指定する

こちらは簡単ですね。

$ rm ./-file
2. 連続ハイフン(--)を使用する

メモりたかったのはどちらかというとこの方法について。

下記リンクを参考にさせて頂きましたが、
コマンドの途中に--(2つ連続するハイフンのみ)を指定するとそれ以降の指定はパラメータとして認識されなくなります。
* UNIX Q&A集

これを利用してファイル名の前に--をつけることでそれ以降がパラメータではなくファイル名として扱われます。

$ rm -- -file

まとめ

こんな些細なことでも突然起こるとぱっと出てこないもんですよねーというメモでした!

【git】git checkoutで"fatal: unable to write new index file"というエラーが出るときの対処法メモ

はじめに

タイトルの通りですがgitでcheckoutしようと思ったらこんなエラーが出た

$ git checkout ブランチ名
fatal: unable to write new index file

そんな時の対処法

原因

すごく調べたわけじゃないですが、そのままエラーメッセージでぐぐったら同様の事象が出てきました。
どうやらディスク容量がいっぱいだと出るらしいですがまさかこの前まで空いてたのにねぇ。。。と思いながら見てみる

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              30G   29G  4.0K 100% /
tmpfs                 1.5G     0  1.5G   0% /dev/shm

いっぱい!いっぱいっていうか100%!
ということでduあたりでどのディレクトリがいっぱいか調べたら少し前に動かしていたスクリプトが永遠とログを吐き続けているためでした...orz

対処法

対処法はもうまんまですがディスク容量を開けることですね。

【perl】DBI::mysqlでmysqlに接続すると`[error] install_driver(mysql) failed: Can't load '/home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16`と表示されるやーつの対応

はじめに

perlbrew x cpanm x あとはいろいろな構成でアプリを作っていたのですが、 DBD::mysqlperl->mysql接続しようとするとこんなエラーが出ることがあります。

[Mon Oct 12 20:16:59 2015] [error] install_driver(mysql) failed: Can't load '/home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16: cannot open shared object file: No such file or directory at /home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/5.18.4/x86_64-linux/DynaLoader.pm line 190, line 309. at (eval 96) line 3. Compilation failed in require at (eval 96) line 3. Perhaps a required shared library or dll isn't installed where expected at lib/hogeModule/Information.pm line 26.

そんなときの対処方

対処

対処方法はこちらを参考にさせていたきました。
http://unix.stackexchange.com/questions/82076/error-while-installing-perl-dbd-mysql

どうやらlibmysqlclient.so.16がないっぽかったのですが、locateすると出てきたのでいまいちよくわかっていません。

# locateしてみるとあるっぽい
$ locate libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16.0.0

# しかし該当ディレクトリをlsすると見当たらない
$ ls -al /usr/lib64/mysql/
-rw-r--r--   1 root root 17419410 Sep 19 00:22 libmysqlclient.a
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x   1 root root  7810465 Sep 19 00:22 libmysqlclient.so.18.0.0
lrwxrwxrwx   1 root root       16 Oct 12 20:15 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx   1 root root       17 Oct 12 20:15 libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient_r.so.18.0.0 -> libmysqlclient.so.18.0.0

# とりあえず対処
$ sudo yum install perl-DBD-MySQL.x86_64

# lsで確認
$ ls -al /usr/lib64/mysql/
-rw-r--r--   1 root root 17419410 Sep 19 00:22 libmysqlclient.a
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:30 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
-rwxr-xr-x   1 root root  2788228 Sep 19 00:23 libmysqlclient.so.16.0.0
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x   1 root root  7810465 Sep 19 00:22 libmysqlclient.so.18.0.0
lrwxrwxrwx   1 root root       16 Oct 12 20:15 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx   1 root root       17 Oct 12 20:15 libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx   1 root root       26 Oct 12 20:30 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
-rwxr-xr-x   1 root root  2820538 Sep 19 00:23 libmysqlclient_r.so.16.0.0
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient_r.so.18.0.0 -> libmysqlclient.so.18.0.0
-rw-r--r--   1 root root     9904 Sep 19 00:21 libmysqlservices.a

おわり

とりあえず対処できちゃったのであまり調べてませんがメモ(><)