複数の環境に共通のシェルやプログラムを配置することがあります。「全て同じはず」という言葉を信じる以外に確認方法がない場合、gitに移行する方法です。
bareリポジトリの作成
bareリポジトリを作ります。GitHubやbitbucketを使ってもokです。
$ git init --bare repo
対象の複数のディレクトリにリポジトリを作ります。
$ cd serv1 $ git init $ git add . $ git commit -m "init" $ cd ../srv2 $ git init $ git add . $ git commit -m "init"
bareリポジトリにpushします。
同じことをserv2にも行います。
$ cd serv1 $ git remote add origin user@localhost:/tmp/bare $ git push -u origin master:serv1 $
bareリポジトリをclone
bareリポジトリをcloneして、serv1
とserv2
を、それぞれcheckoutします。
$ git clone user@localhost:/tmp/repo work $ cd work $ git checkout -b serv1 origin/serv1 $ git checkout -b serv2 origin/serv2 $
差分
serv1
ブランチとserv2
ブランチの差分を確認することで、違いが分かります。
$ git diff --name-status serv1 serv2 M readme.txt D src/scr2 $
serv1をチェックアウトして修正/テストする
テスト環境で特定のブランチをcloneして修正/テストします。
$ git clone -b serv1 user@localhost:/tmp/repo work $ cd work $ git branch -av * serv1 0640614 update2 remotes/origin/serv1 0640614 update2 remotes/origin/serv2 b7ab37e update $
テストが完了したらadd/commitしてpushします。
$ git add . $ git status On branch serv1 Your branch is up-to-date with 'origin/serv1'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: readme.txt $ git commit -m "fix" [serv1 554a8cb] fix 1 file changed, 1 insertion(+) $ git push $
リリース
serv1環境でpullしてタグ付けします。
$ cd serv1 $ git pull 0640614..554a8cb serv1 -> origin/serv1 * [new branch] serv2 -> origin/serv2 Updating 0640614..554a8cb Fast-forward readme.txt | 1 + 1 file changed, 1 insertion(+) $ git tag v1.1 $
ブランチをサーバ名、タグをリリースを特定する番号にすることで台帳+手作業をなくすことが出来ます。
以上