2012-01-11 8 views
1

VMと中央のSVNリポジトリの間でコードを管理する最良の方法は何ですか?ラップトップとデスクトップのubuntu VMでコーディングする

具体的には、私はLinuxのVM環境を備えたデスクトップと、LinuxのVM環境を備えたラップトップを持っています。どちらもVMWareワークステーションで動作しています。私はいつもデスクトップとラップトップの間を行き来しますが、デスクトップとラップトップを同期させておくのは難しいです。

私は、マシンを切り替える前に、最も明白ですが、おそらく最も効率の低い選択肢は、すべてをコミットすることです。しかし、これによって部分的に完全なコードが作成され、別のマシンで作業することができます。

私は2つの開発環境を同期させるためにrsyncのようなものを使うことを考えました。デスクトップとラップトップの両方を同期させながら、私が望むときでもsvnの変更をコミットできるので、これはより良いと思います。

私はrsyncルートに行きたいと思っていますが、私はまだ積極的に物事を同期しなければならないと心配しています。私の場合、私はデスクトップ上の何かに取り組んでいるシナリオを描いています。その後、ノートパソコンで仕事をするコーヒーショップに行って、家を出る前に同期していなかったDOH!)。

実際にこの問題を回避する方法があるかどうかはわかりません。たぶん、常にオンラインである中央サーバにすべてを同期させることができますか?私のさまざまな開発環境と同期するために、数分おきに実行するようにcronジョブを設定しますか?

もっと良い選択肢はありますか?

答えて

0

代わりに分散バージョンコントロールを使用することを検討できます。中央サーバを変更する機能がなければ、git-svnのようなラッパーがあり、Subversionサーバーとやりとりしながら、gitを最後まで使うことができます。

DVCSのセットアップのワークフロー:

  1. ローカルにコミットし、マシン#1で変更を行い、繰り返します。
  2. 切り替え時に、ローカルにコミットします。
  3. チェンジセットをマシン#1からマシン#2にプルまたはプッシュプッシュ
  4. マシン#2で作業を続行します。
  5. 切り替え時に、ローカルにコミットします。マシン#にマシン#2から
  6. プルまたはプッシュチェンジ1
  7. 繰り返し

とき、それはあなたが最新のコードを持っていなければならないにしている方のコンピュータ実際にサーバにプッシュするための時間、だとあなたはプッシュできますマスターサーバーまで(SVNなど)。

これは中間的な変更をコミットすることを意味しますが、DVCSを使用する利点のほうが負担ではないことがわかりました。

これに代わる方法は、全体のdevディレクトリをDropboxフォルダまたは同等のものに保つことです。そうすれば、rsyncや何かを自分で処理する必要はありませんが、同期の制御はほとんどありません。

+0

これは合理的なアプローチです。しかし、私はrsyncを使用するルートを終了しました。まず、私はinotifyとの同調を、それについてのいくつかの勧告の後に試みました。しかし、ユニゾンは.svnファイルを含むすべてのものを反映しているという事実のために、挑戦しました。私は、メタデータファイルと他のすべてのものがコピーされていたので、絶えずsvnリンクが壊れてしまった。私はそれにもっと時間を費やしていたら、おそらくそれを働かせることができたかもしれないと思うけど、それはまだ少しの仕事のように思えて、結局それをダンプすることに決めました。 – dustin999

+0

代わりに、私はrsyncルートを行った。私が当初計画していたものよりも少し優雅な解決策でしたが、何が起こっているのかをより詳細に制御できるようになり、コントロールのために恐ろしいことが起こることを心配しなくなりました。 – dustin999

0

syncdは、https://github.com/drunomics/syncdである可能性があります。それはinotifyとrsyncを使って、変更されたrsyncファイルをリモートサーバにファイルシステムの変更を待ち受けます。

これは片方向の同期ですので、あるマシンで作業を停止してもう一方のマシンで起動すると、停止する必要があります。また、両方のマシンでsshサーバーを実行する必要があります。

関連する問題