16

私はレガシーsvnリポジトリを使用しています。gitただし、ローカルマシンでのメリットを享受したいと思います。

  • 最初のオプションは、現在のリポジトリのルートであり、コードを記述し、ローカル( )とリモート( )git initでコードを個別にコミットします。git commitsvn commit
  • 2番目のオプションはですgit-svnが、新しいツールのニュアンスを学ぶのに苦労する価値があるかどうかはわかりません。

これについてはどうすればよいですか?

4

4 に答える 4

11

私は非常に強く支持したいと思いgit-svnます。私自身と私の同僚の何人かは、Subversionのものの上にGit再現を使用しようとしましたが、それは痛みと恐怖からなるプロセスです。

確かに、これはSubversion1.6.x用です。ディレクトリが1つしかないので、1.7.xの方が良いと思います.svn

  • リポジトリから更新するには、Subversionから更新をプルしてから、Gitでコミットする必要があります。それは遅くて退屈です(確かにそれはかなり遅いgit-svnですが、少なくともそれはプロセスを自動化します)。

    さらに、Subversionを使用してすべてのコミットをダウンロードして手動でGitにコミットするか、Subversionコミットの束をGitリポジトリにコミットすることに$deityなり、Gitコミット間のSubversionリビジョンで作業する場合に役立ちます。

  • Gitは空のディレクトリを処理できません。Subversionでは、ディレクトリの形式に空のディレクトリが必要です.svn。つまり、.svnリポジトリをGitリポジトリの外部に保持する必要があるため、git checkout操作には個別のが必要になりますsvn up

  • お気づきのように、すべてを個別にコミットする必要があります。

したがって、SubversionとGitを別々に使用すると、GitとSubversionの両方でほぼすべての操作を実行する必要があります。つまり、すべてに時間がかかり、両方のシステムのすべての欠点がありますが、どちらも互いの利点をうまく乗り越えています。

于 2012-06-14T09:31:53.810 に答える
6

git-svnを使用してください、それは本当に簡単です。最初にリポジトリのクローンを作成してから、最新の変更で作業またはそれgit svn cloneを実行できます。ローカルブランチをマスターにリベースして、それらをとマージできるようにすることで、履歴が常に線形であることを確認してください。git svn dcommitgit svn rebasegit merge --ff-only

于 2012-06-14T07:51:57.387 に答える
4

git最善の方法は、SVNに移行して破棄することです。

ただし、それがオプションでない場合は、を使用してgit-svnください。

git / svnに個別にコミットする場合、SVNにコミットすることは非常にまれであり、他の開発者が巨大なコミットを行うことになります。

于 2012-06-14T07:52:08.257 に答える
2

SubGitプロジェクトを試すことができます。SubGitをSVNリポジトリにインストールします。SVNリポジトリ用の純粋なGitインターフェース(git-svnではなく実際のGit)が作成されます。その後、リポジトリにSVNまたはGitの両方のインターフェースを使用できます。

SVNサーバーにアクセスできない場合は、SmartGitクライアントという別の推奨オプションがあります。git-svnと同様に動作しますが、より多くの機能(タグ、無視、EOL処理、チェリーピック)を提案します。

于 2012-06-15T23:33:36.803 に答える