0

さて、ここに私の問題があります。私の仕事はSVNを使用しています。Gitをローカルで使いたい。git svnを使用すると非常に簡単に思えますが、1つの完全なチェックアウトに入る5つの異なるSVNリポジトリを文字通り使用しているため、私の作業は少しレンチを投げ込みました。

したがって、svn upを実行すると、文字通り5つの異なるリポジトリからプルされます。つまり、アプリケーション全体を作成するには、これら5つのリポジトリのそれぞれが必要であるため、単純にgitsvnクローンを作成することはできません。さて、これを変更する力があれば...しかし、その間に、チェックアウトされたアプリケーションにアクセスして、「gitinit」/「gitadd」を実行することができます。など、gitをだましてその1つの巨大なリポジトリを考えさせますか?次に、コミットするときが来たら、svnコマンドを使用してコミットしますか?

ご協力いただきありがとうございます!

4

1 に答える 1

1

これを行うためのgit-svnのサポートはありません。コミット/リベースを実行する簡単なbashスクリプトを作成することもできますが、SVNリポジトリの更新またはコミット中に問題が発生した場合に備えて、正直に言って手動で実行することをお勧めします。

この問題が発生した場合、リポジトリを1つのディレクトリに複製してから、メインプロジェクトと外部リポジトリの間にシンボリックリンクを作成します。

つまり、私が構造を持っているとしましょう:

/main-project
  /external-repo-1
  /external-repo-2
  /external-repo-3
  ...etc

私はこのようなことをします:

# Create the unified project directory
mkdir LocalProject
cd LocalProject
# Clone the main project
git svn clone svn+ssh://svnserver/main-project
# Find out where all the external repos are
cd main-project
git svn show-externals
cd -
# Clone the sub-repos
git svn clone svn+ssh://svnserver/external-repo-1
git svn clone svn+ssh://svnserver/external-repo-2
git svn clone svn+ssh://svnserver/external-repo-3
...etc
# Create the symlinks
cd main-project
ln -s ../external-repo-1
ln -s ../external-repo-2
ln -s ../external-repo-3
...etc

警告:これは言うまでもないことだと思いますが、リポジトリにシンボリックリンクをコミットしないように注意してください。

于 2012-12-17T16:39:56.587 に答える