前回 git-media をインストールして動作をちょっと確認するところまで説明しました。
今回は以前に説明できなかった部分を見ていこうと思います。
git media sync について
巨大ファイルのハッシュから実体や、そもそも管理場所に送信する機能として git media sync を手作業で実行していました。
それは以下のような設定をしたからでした。
[git-media] transport=local autodownload=false localpath = d:/temp/
この autodownload を true に変更したらどうなるかを見てみます。
新規にファイルを追加して、add, commit した時点では変化がありませんでした。
しかし、Push を実行すると、・・・なんと挙動は従来のままかわりません!
設定項目の通り、ダウンロードのみに影響するようです。
この設定はリポジトリのチェックアウト時(ブランチの切り替え時とか)の挙動に影響してくるようです。
チェックアウト時に管理されている対象のファイルを、その外部の置き場からダウンロード(取得)してくるようになります。説明によると Pull 時にもこの設定は効いてくるようです。
ブランチ切り替えで少し手間がかかるかも
autodownload=true/false どちらでも試してみましたが、チェックアウト時には若干つらいケースがあるようです。
問題切り分けのための切り離されたヘッド(Detached HEAD)状態にしようとすると、 error: Your local changes to the following files would be overwritten by checkout: と出てしまいうまくいきません。 stash 等でクリーンな状態で始めてもこうなりました。
こういったときには、そのファイルを一度削除してからブランチを切り替えるとうまくいきました。若干このあたりが通常の git 操作よりも煩雑でつらい感じではあります。
リベースとか
ちゃんとリベース操作やコミット編集などは可能でした。コミットの順序変更も出来ました。ただテキストや単純なバイナリと違う点でややこしいリベース時は大変になるかもしれないと感じました。コマンド操作でやろうとした際に stash がどうこういわれてしまうケースがやはりありました。 tortoise Git を用いてブランチのリベースを行った場合にも同様ですが、スタッシュしてリベースを繰り返していけば何とかリベース自体は成功しました。コマンドラインのみで操作できる自信はちょっとないですね・・・。
マージとか
fast-forward なマージではスムーズにマージが出来るのは確認しました。通常のmergeについても試してみましたがバイナリに関して同時に追加されていない限りはスムーズにいきました。