2010-05-04 53 views
3

我有一個老闆,過去式,他決定把svn分支放在與trunk相同的文件夾中。通常情況下,這並不會影響我,但因爲我使用的是git-svn,所以事情進展得很順利。在我做了一個抓取後,它爲我的根文件夾中的每個分支創建了一個文件夾,所以我有三個文件夾,drupal,trunk和client。 drupal文件夾是git的主分支,客戶端和主幹是svn分支。使用奇數分支結構時Git-svn分支軟管dcommit

合併和提交工作很好,實際上所有與git相關的工作都非常出色。但是,dcommit完全被佔用,它試圖提交一個名爲client的文件夾和一個名爲trunk的文件夾。我甚至無法想象這會對svn會造成什麼破壞。

所以我的問題是,我在我的.git/config中做了什麼錯誤,有什麼我可以做的,以解決這個問題,還是我將不得不忍受並回到使用svn?

請不要讓我回去。我認爲我不能再忍受了。混蛋老闆知道如何留下遺產。

[svn-remote "svn"] 
     url = https://svn.mydomain.com/svn/project_name 
     fetch = trunk:refs/remotes/trunk 
     branches = *:refs/remotes/* 
     tags = tags/*:refs/remotes/tags/* 

通常,分支線是這樣的(使用--stdlayout時):

branches = branches/*:refs/remotes/branches/* 

LS輸出是這樣的:

$ ls 
client/ docs/ drupal/ sql/ trunk/ 

GIT中-a輸出:

* master 
    trunk 
    remotes/git-svn 
    remotes/trunk 
+0

有什麼改變? dcommit曾經工作過嗎? – dlamotte 2010-05-04 23:04:21

+0

是的,我曾經使用stdlayout,它運行得很好。但我需要開始與這個客戶分支交談,所以我必須更改.git/config – 2010-05-04 23:05:42

+0

@chuck在更改之前和更改之後它看起來是什麼樣子? – dlamotte 2010-05-04 23:06:27

回答

2

我想你打破了你的.git/config whe n您更改:

branches = branches/*:refs/remotes/* 

branches = *:refs/remotes/* 

更改您的.git/config中回你有什麼正常。然後添加一個新的遠程類似這樣的格式(這是我從這個頁面,http://www.dmo.ca/blog/20070608113513/發現),但與服務器的信息代替:

[svn-remote "svn34"] 
    url = svn+ssh://your-server/home/svn/project-name/branches/3.4.x 
    fetch = :refs/remotes/git-svn-3.4 

請注意添加一個新的「遠程」跟蹤的差異新的分支。您當前的遠程無法用於跟蹤不同的分支(就像從git-svn文檔中看到的那樣)。

+0

出於某種原因,我的老闆沒有將分支放在分支文件夾中,他只是在層次結構中將它們放在旁邊的樹幹上。所以stdlayout .git/config沒有這樣做是行不通的。 – 2010-05-04 23:16:16

+0

這是一個微妙的答案。原來有兩條獲取線是可以的。因此,我將分支設置回原來的位置,並添加了第二條獲取線,以便客戶端有點像主幹。 Git對待它非常好,而且一切似乎都很好。感謝所有的建議! – 2010-05-05 00:01:42

1

如果您不介意在每次添加分支時編輯.git/config,則可以使用glob集語法(http://www.kernel.org/pub/software/scm/git/docs/git -svn.html#_configuration):

fetch = trunk:refs/remotes/trunk 
branches = {client,drupal}:refs/remotes/* 
+0

謝謝,我很欣賞答案。我已經走了,但我希望別人認爲這很有用。 – 2012-07-12 02:18:25