2016-04-14 6 views
0

SubGitを使用してSVNからGITにコードを移行しています。 私のSVNリポジトリの一部は、として構築されています:GITサーバーの特定のフォルダにローカルリポジトリを追加する

SVN-Repo 
    + Project1 
     + trunk 
     + branches 
     + tags 
    + Project2 
     + trunk 
     + branches 
     + tags 

使用SubGit:

subgit import --svn-url <svn_server>/SVN-Repo/Project1 C:\GitRepos\SVN-Repo\Project1.git --username xxx --password xxx. 

私は地元のレポにクローン何をした後。その後

:私はSVNとしていたよう

git clone <Git_server>/_git/GIT-Repo 
git push -u origin --all 

結果はGIT-レポに終わり、私はドンということですが」Project1の名前のフォルダを持っています。 調査後、このProejct1フォルダGITリポジトリを作成できるコマンドが見つかりませんでした。

私を助けることができますか?

ありがとうございます。

+0

どのような結果を達成したいですか(私は "git clone" + "git push"コマンドを理解できません)?あなたが使ったコマンドは、 'C:\ GitRepos \ SVN-Repo \ Project1.git'にあるGitリポジトリを作成しました。 Project1.gitを提供するためにGitサーバを設定する必要はありません –

+0

GITでSVNと同じ構造をしたいと思います。 GITリポジトリ内の意味:2つのサブフォルダProject1とProject2 with master ... Project1をプッシュすると、それはProject1という名前のフォルダではなく、リポジトリのルートにあります。 – Didier

+0

これはGitの動作です。ブランチには、それ自身のサブツリーなどを持つツリー(フォルダー)があります。サブツリー内にブランチを含めることはできません。しかし、リポジトリ全体をディレクトリ(推奨しません)またはブランチ 'refs/heads//*'または 'refs/heads/ - *'のブランチメント(これもdoesnプロジェクトが関連していない場合は意味をなさない)。あなたがしたことは、最も合理的なことでした。 –

答えて

0

SVNをgitに1回変換するには、svn2gitの使用をお勧めします。この名前のツールがたくさんあります。おそらく最高ののはKDEのものがhttps://github.com/svn-all-fast-export/svn2gitです。 svn2gitの適切なルールを構築するためのSVNリポジトリの履歴を分析するには、ここからsvnevereverを使用してください:http://blog.hartwork.org/?p=763

私はSVNリポジトリのいくつかをGitに既に変換してくれて本当に素晴らしい仕事をしています。

そしてそこにprefixルールを使用して、必要なサブディレクトリを取得することができます。

1

そこには3つのオプションがすでに(最も合理的なオプション)やった

オプション1です。 SVNの両方のプロジェクトを2つの別々のGitリポジトリに変換します。 その後、GitLab、Atlassian Bitbucket Server、または他のGitサーバーソフトウェアを使用して、リポジトリへのアクセスを設定します。

オプション2. SVNリポジトリ全体を1つのディレクトリとして扱います。あなたが継続的な同期を必要としない場合

subgit configure --svn-url <svn_server>/SVN-Repo --layout directory C:\GitRepos\SVN-Repo\repo.git 

subgit install C:\GitRepos\SVN-Repo\repo.git 

次に、あなたは

subgit uninstall C:\GitRepos\SVN-Repo\repo.git 

を実行することができます。この場合、GitリポジトリはSVN-Repoをルートにします。

オプション3両方のプロジェクトのブランチを持つ1つのGitリポジトリ。その後

subgit configure --svn-url <svn_server>/SVN-Repo C:\GitRepos\SVN-Repo\repo.git 

あなたは連続同期を必要としないならば、あなたは

subgit uninstall C:\GitRepos\SVN-Repo\repo.git 

を実行することができます

subgit install C:\GitRepos\SVN-Repo\repo.git 

を実行し

trunk = Project1/trunk:refs/heads/project1-master 
branches = Project2/trunk:refs/heads/project2-master 
branches = Project1/branches/*:refs/heads/project1-* 
branches = Project2/branches/*:refs/heads/project2-* 
shelves = shelves/*:refs/shelves/* 
tags = Project1/tags/*:refs/tags/project1-* 
tags = Project2/tags/*:refs/tags/project2-* 

を設定するrepo.git/subgit/configを編集します。

この場合、あなたのプロジェクトに対応するproject1-project2-で始まるブランチを持つ1つのGitリポジトリがあります。 project1-/project2-の代わりにproject1//project2/を使用することもできます。

このように3つのオプションのうち1つを選択できますが、最初のものが最適です。

+0

お返事ありがとうございました。私はオプション1を維持する。 – Didier

関連する問題