2011-03-02 11 views
0

私はsvnの経験はあまりありませんが、私はgitで作業するのに慣れています。git-svnを使ってgitブランチにsvnブランチを統合するには?

私は以下のsvnリポジトリ構造とリビジョンを持っています。

https://server/svn/solution/trunk/solution.sln @ R100
https://server/svn/solution/trunk/project1/project1.csproj @ R150
https://server/svn/solution/trunk/project2/project2.csproj @ R160

https://server/svn/solution/branches/solution.sln @ R100
https://server/svn/solution/branches/project1/project1.csproj @ R200
https://server/svn/solution/branches/project2/project2.csproj @ R350

私は、リポジトリ

のクローンを作成する場合私は、リモート1

(master)$ git checkout -b local-project1 project1 

のためのローカルブランチを作成したいときに私はすべて

(master)$ git branch -a 
* master 
    remotes/project1 
    remotes/project2 
    remotes/trunk 

を取得https://server/svn/solution

--stdlayout

のgitのsvnクローン私が得るすべて私がチェックアウトするとき、ブランチはproject1です。

(local-project1)$ git checkout master 
Switched to branch 'master'. 
(master)$ git branch local-project1 -D 
Deleted branch local-project1 (was 1111a11). 
(master)$ git checkout -b local-project1 
Switched to new branch 'local-project1'. 
(local-project1)$ pwd 
/c/workingcopies/solution 
(local-project1)$ cd project1 
(local-project1)$ pwd 
/c/workingcopies/solution/project1 
(local-project1)$ git branch --set-upstream local-project1 remotes/project1 
Branch local-project1 set up to track local ref refs/remotes/project1. 
(local-project1)$ git svn fetch 
(local-project1)$ git reset --hard ae8e9b1a ;# go to last commit of the remote branch 

をフェッチリポジトリにブランチからの最後のリビジョンを取得します:ブランチは、私は以下を試してみました問題を解決するためにR100

@

https://server/svn/solution/branches/solution.slnから何かが含まれていませんHEADは最後のコミットに設定されていますが、私はまだソリューションではなく、ブランチ内のproject1しか取得しません。どんなアドバイスや助けもありがとうございます。

答えて

1

問題は、標準のsvnレイアウトがないことです。標準的なレイアウトでは、各ブランチのブランチの下にディレクトリがあります。

repo/ 
    +-- trunk 
    |  +-- solution.sin 
    |  +-- project1/project1.csproj 
    |  +-- project2/project2.csproj 
    +-- branches/ 
     +-- branch01/ 
       +-- solution.sin 
       +-- project1/project1.csproj 
       +-- project2/project2.csproj 

代わりにトランクとトランクと同じディレクトリにある「支店」と呼ばれる枝を持っています。

gitがこれを正しく処理するように指示できるかどうかはわかりません。私はいくつかのアイデアを持っています:.git/configを編集して、gitが一番上のディレクトリのブランチを探すようにすることはできますが、すでにトランクを持っている間にtrunkというブランチを作ろうとすると混乱するかもしれません。

+0

私はこのアプローチを試みましたが、異なるgitエラーメッセージのために失敗します – mrt181

+0

どちらのアプローチですか? svnを再編成するか、gitを使ってブランチの通常よりも高いディレクトリを探してみましょうか? – AFoglia

+0

tricking git。 svn repoは標準に準拠していません。近いうちにレポが移動され、私の同僚はレポを再編成します。 – mrt181

関連する問題