SubversionからGitへ移行しようかなと考えて、Gitの勉強。
まず、原状の確認。
うちでは、Linuxのサーバを一つ立てていて、メインは音楽や動画などの保存用、ついでに、Subversionのレポジトリを保存している。
趣味で書いたプログラムや、その他、履歴を残しておきたいファイルなどをバックアップの「前バックアップ」のような感じで、Subversionを使っている。Windowsからアクセスする際はTortoiseSVNを使用。TortoiseSVNは日本語化はしていない。日本語化すると、対応するコマンドがどれがどれやら、よくわからんくなるんで。
こんな感じでテストプログラムやらお遊びのプログラムが埋まっている。
現在の日常の作業手順。あくまでも僕の作業手順なので、他の人にも当てはまるかどうかは不明。家での作業の場合は、他人が同時に同一項目を編集することが無いので、もうちょっとシンプルだけど、グループで作業している状況を想定して作業手順をメモ。
1. サーバから最新のソースコードを新規取得(Checkout…)
右クリックから TortoiseSVNのCheckout…でそのフォルダに最新のコードを持ってくる。
2. ソースコードをいじる、デバッグ、などなど
大抵Visual Studioでごにょごにょいじる。
動作確認をして、変更終了。
ファイルを削除や追加する際は、TortoiseSVNの右クリックで、DeleteやAddのコマンドを使う方法もあるが、後でもできるので、無視。
3. 自分のいじった箇所が気に入らなかった場合 (Revert…)
フォルダごと削除して、再度Checkoutしてもいいんだけど、Revertの方が早いので。
右クリックからTortoiseSVNのRevert…を選択すればOK。
ファイルから右クリックならそのファイルが、フォルダから右クリックならそのフォルダがRevertされる。
4. 自分がいじっている間に、他人がいじってないか確認 (省略可) (Show log)
前回最新版を取ってきてから、現在までに他人がファイルを編集している可能性がある場合、自分の変更が他人の変更と辻褄があわないことがあって、次の5. Updateでややこしいことになるので、先に確認。
右クリックからTortoiseSVNのShow log…でログを確認する。
5. 自分の変更を登録する前に、再度最新版を取得 (省略可) (Update)
前回最新版を取ってきてから、現在までに他人がファイルを編集している可能性があるので、再度、最新版を取得。
右クリックからTortoiseSVNのUpdateで取得。
この際、自分がいじったファイルが既に他人にいじられていると、自動で合成(Merge)される。
自動で合成(Merge)しようとして、辻褄があわないことが見つかると、衝突 (Conflict)のフラグが付く。
衝突 (Conflict)のフラグが付いた場合、TortoiseMergeなどのツールをつかって、ファイルを編集。衝突 (Conflict)を解消し、フラグを消す。フラグを消したら再度、Updateして、大丈夫なことを確認。
6. 自分の変更を最終確認 (省略可) (Check for modifications)
右クリックからTortoiseSVNのUpdateで自分の変更したものの一覧が、またその一覧を選択すると、Diffが表示される。
ファイルを削除してたり、ファイルを追加している場合は、Missing とか、non-versonedなどとStatusに出るので、右クリックからDeleteやAddを選択して設定。
自分の変更を登録する前に、自分の変更を最終確認。テストコードや、無駄な変更などが無いかコードレビューも兼ねて。
ここで、サーバに送信するファイルリストをメモ帳で作成する。(省略可)
この項目は次のCommitでも同じ作業ができるので、Commit側でやってもよし。
7. 自分の変更をサーバに登録 (Commit…)
右クリックからTortoiseSVNのUpdateで自分の変更したものの一覧が、またその一覧を選択すると、Diffが表示される。
ファイルを削除してたり、ファイルを追加している場合は、Missing とか、non-versonedなどとStatusに出るので、右クリックからDeleteやAddを選択して設定。
自分の変更を登録する前に、自分の変更を最終確認。テストコードや、無駄な変更などが無いかコードレビューも兼ねて。
リストの一番左のチェックボックスでサーバに送信するファイルを選択できる。自分の変更すべてを送信するときもあるけど、一部だけを送信することもある。その際はチェックを外す。ここでは、6. Check for modificationsで作成した、ファイルリストが役に立つ。これちゃんと確認しないと、チェックインし忘れが発生して、泣く。
すべてOKならチェックインコメントを追加。OKを押してチェックイン。ごくたまに、チェックインに失敗するのでその際は、再度自分の作業を確認。大抵はCommit作業中に誰かがタイミングよくチェックインしてくれているので、その作業との衝突確認。
さぁ、これらの作業がGitではどのように行われるようになるのか。。。