0

この世界の 2 つの物理的な場所を想像してください。

  1. マスター svn リポジトリを使用しますが、インターネットはありません。
  2. マスター リポジトリ ファイルのコピー。ただし、現在 VCS にはありません。

現在、プログラマーとしての私の仕事は、これら 2 つの場所 (同じ機能で) で作業することです。

これら 2 つの場所の間でファイルを同期するには、変更されたファイルを CD に書き込み、別の場所に移動して、各ファイルを慎重にマージします。また、関連性があるかどうかはわかりませんが、私と一緒にそのプロジェクトに取り組んでいる他のプログラマーがいます。サイト 1 をメイン オフィスとする会社もあれば、サイト 2 をメイン オフィスとする会社もあります。

サイト 1 のメイン リポジトリが svn であるという事実を変更することはできませんが、これは分散環境のように見えます。これらのサイト間でファイルを簡単に移動およびマージするには、どのように git を使用すればよいでしょうか?

4

3 に答える 3

1

Subversionはにリポジトリで動作します。Subversion は、短期的にはリポジトリ接続なしで動作するように設計されていましたが、最終的にはリポジトリに接続する必要があります。そうしないと、変更をコミットできません。これは 1 日か 2 日なら問題ないかもしれませんが、数週間または数か月の場合は大きな問題になります。

1 つの解決策は、分散リポジトリ モデルに移行することです。git-svn を使用すると、Subversion リポジトリからチェックアウトし、変更をそのリポジトリにプッシュすることができます。マージの問題 (作業とリモートの間で何週間も同期されない) ですが、少なくとも作業でバージョン管理を使用できるようになります。

マスター svn リポジトリを使用してそのサイトを取得することは可能ですが、Git に移動するためのインターネットはありませんか? ほとんどの人が Git について理解していないのは、必ずしも中央リポジトリが 1 つあるとは限らず、複数のリポジトリ間で変更をプッシュおよびプルすることができるということです。たとえば、電子メールを使用して Git リポジトリに変更をプッシュできます。このようにして、まだオフサイトのときにコードの変更を配信できます。または、コードの変更を同僚の Git リポジトリにプッシュし、その同僚が変更をマスター リポジトリにプッシュすることもできます。

Git は Subversion よりも少し複雑ですが (結局のところ、Git を使用する場合は、少なくとも 1 つの余分なリポジトリを使用する必要があります)、この場合、分散バージョン管理システムを使用すると、すべての作業がはるかに簡単になります。

于 2013-06-11T14:31:41.727 に答える
1

svn 自体でこれを行うことを検討できます。

  1. サイト 1 から取得したダンプを使用して、サイト 2 に新しい SVN リポジトリを作成します。
  2. 変更をサイト 2 リポジトリにコミットする
  3. CD/ポータブル HDD のレポ 2 からサイト 1 にダンプ (チェックアウトではなくエクスポート) を取得します。
  4. サイト 1 で、チェックアウト
  5. repo2 から repo1 にファイルをマージします (優れたツールを使用することで、ほとんどの作業を自動化できます)。
  6. サイト 1 にチェックイン
  7. サイト 1 から新しいダンプを取得し、サイト 2 に新しいリポジトリを作成します (サイト 1 にマージする必要はありません)。

git を使用する場合でも、競合が発生した場合は手動での介入が必要になります。優れた比較マージ ツールを使用すると、マージにそれほど時間がかかりません。すべてのステップを自動化するスクリプトを作成できます。

于 2013-06-11T07:27:55.847 に答える
0

マシンで git を使用し、 git-svnを使用して SVN リポジトリと同期できます。これによりワークフローが簡単になるかどうかはわかりません… つまり、git が好きなら、ほとんどの場合、開発に git を使用できますが、とにかく SVN に同期するのは面倒です。

于 2013-06-10T20:29:46.350 に答える