wonderful_pandaの日記スマートフォン用の表示で見るwonderful_pandaの日記この広告は、90日以上更新していないブログに表示しています。2011-12-02本当は怖いローカルコミットBazaar前にShibuya.TracとかOSCでBazaarについて話したときには、Bazaarだったら、SVNみたいに集中型で運用しながら、必要に応じてローカルでコミットすることもできるよみたいなことを言ったんですが、最近はちょっと、ローカルコミットってのは挙動にクセがあるから混乱の元だし、使わない方が良さそうだという結論に(僕の中では)なってます。ローカルでコミットしたい場合はちゃんとブランチ切ろうねってことで。いうことで、お詫びもかねて、ローカルコミットを使うとどうなるかというのをちょっとご紹介します。Mergeまず、前提となる用語について。Merge"という状態があります。これは、ここの「ステップ2:分散型の導入」のあたりにある、「mergeを実行したけれど、まだcommitはしていないよ」という状態のことですね。http://standing-shoebill.appspot.com/bzr-startup-guide/scmbc-2.html#id9ここからcommitすれば、マージした内容が確定しますし、revertすればmergeを実行する前の状態に戻ります。ローカルコミットでは、実際にローカルコミットを実行するとどうなるかやってみます。../checkoutチェックアウトした作業コピー上で、ローカルコミットしてみます。2.これで、作業コピー上でローカルコミットできました。作業コピーのログは、今こうなってます。最初のコミットそのまま作業を続けます。次のコミットで、さっきのとまとめてチェックアウト元のブランチにも反映しましょう。"今度は普通にコミット"これで、変更が反映されて、こんな感じのログになるはずです。思ってた時期が僕にもありました。最初のコミット残念!さやかちゃんでした。このコミットは失敗します。disconnected.作業コピーが古いので、まずupdateしろよって言ってます。何で?とにかく、言われたとおりupdateしてみましょう。commit'.何かごちゃごちゃ言ってます。最初のコミットうそです。Mergeの状態になって、リビジョン2(だったもの)はコミット待ちの状態になっているんですね。これで改めてcommitすると、ようやく変更がチェックアウト元に反映されます。2.ログはこうなりました。イヤなポイントというわけで、ローカルコミットのイヤポイントをまとめます。分かりづらいそもそも、「まずは集中型で」っていう運用は、まだDVCSになれていない人たちに勧めたいパターンです。Mergeっていうのは本来ブランチ間のマージによってできる状態なので、それが理解できてるなら普通にDVCSとして使えますしね。Merge状態になったところで、「良く分からないし一旦revertしてやり直そう」とかすると、コミットしたはずのリビジョン2が本当に消えてしまいます。(データそのものが削除されるわけではないので復元することはできますが)「え?ちゃんとコミットしたはずなのに、何で?」って感じです。そもそもやりたいことと違う別に、ローカルコミットって、分岐を作りたくてする訳じゃないですし。他の人の更新とバッティングして分岐ができるのは仕方ないけど、他に誰も更新してなくても分岐ができてしまうのってどうなのよと。いうわけで、チェックアウトのローカルコミットは初心者にはおすすめできないよ、って話でした。初心者じゃない人にはお勧めかっていうと、そういう人は普通にブランチ切るだろうから、そもそもローカルコミット使わなそうですしね。../testってすれば、リビジョン2をそのままチェックアウト元のブランチに反映することが出来ます。分かんないよねそんなの。Calendar用に書きかけてて、結局出番のなかった...2011-12-19tiplogプラグインを使ってみるGitには、reflogというコマンドがあって、ブランチのHEADがどの...2011-12-12どうしてもVSSを使わなければならない人のためのDVCS入門まあVSSもそんなに悪いツールではないです。少なくとも90年代当...2011-12-09フックを作ってみる。WinMergeのインスタンスマネジメント月別アーカイブはてなブログをはじめよう!wonderful_pandaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。