私はレガシーsvn
リポジトリを使用しています。git
ただし、ローカルマシンでのメリットを享受したいと思います。
- 最初のオプションは、現在のリポジトリのルートであり、コードを記述し、ローカル( )とリモート( )
git init
でコードを個別にコミットします。git commit
svn commit
- 2番目のオプションはです
git-svn
が、新しいツールのニュアンスを学ぶのに苦労する価値があるかどうかはわかりません。
これについてはどうすればよいですか?
私は非常に強く支持したいと思い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の両方でほぼすべての操作を実行する必要があります。つまり、すべてに時間がかかり、両方のシステムのすべての欠点がありますが、どちらも互いの利点をうまく乗り越えています。
git-svnを使用してください、それは本当に簡単です。最初にリポジトリのクローンを作成してから、最新の変更で作業またはそれgit svn clone
を実行できます。ローカルブランチをマスターにリベースして、それらをとマージできるようにすることで、履歴が常に線形であることを確認してください。git svn dcommit
git svn rebase
git merge --ff-only
git
最善の方法は、SVNに移行して破棄することです。
ただし、それがオプションでない場合は、を使用してgit-svn
ください。
git / svnに個別にコミットする場合、SVNにコミットすることは非常にまれであり、他の開発者が巨大なコミットを行うことになります。