2012-07-25 64 views
1

這是我想要做的。是否有可能git自動更新svn

  • 在git中有項目。很多人推,拉,合併等正常工作流程
  • 有一個和唯一一個這些git回購的推動變化在它的主分支svn。

沒有人會承諾svn回購。這只是一個方向。從git到svn。它只會改變掌握git並將它們添加到svn。 svn基本上是主分支的svn版本。

我想我可能只是做

git svn dcommit 

一遍又一遍在

..edit, push and or pull files.. 
git commit -a -m "foo1" 
git svn dcommit 
..edit, push and or pull files.. 
git commit -a -m "foo1" 
git svn dcommit 
..edit, push and or pull files.. 
git commit -a -m "foo1" 
git svn dcommit 

但是,這似乎並沒有工作。我不斷收到衝突和消息,如

$ git svn dcommit 
Committing to https://my.svn.repo/svn/ ... 
     M  README.md 
Committed r18619 
     M  README.md 
r18619 = 8f00073a3f1987e97a0f0f194798b6e02e9b0345 (refs/remotes/git-svn) 
No changes between current HEAD and refs/remotes/git-svn 
Resetting to the latest refs/remotes/git-svn 
Unstaged changes after reset: 
M  README.md 
     M  README.md 
Committed r18620 
     M  README.md 
r18620 = 47313477c1e38959fadd43d0001ff55210637669 (refs/remotes/git-svn) 
No changes between current HEAD and refs/remotes/git-svn 
Resetting to the latest refs/remotes/git-svn 

這似乎很腥。 git status給了我

# On branch master 
# Your branch and 'origin/master' have diverged, 
# and have 2 and 2 different commits each, respectively. 
# 

我覺得我從根本上失去了一些東西。就像也許我不應該使用git-svn。事實上,如果我所做的只是這樣的,那麼它會實際工作,我只是失去了所有的提交信息和個人提交。

有人能指出什麼我失蹤

回答

0

輸出從git svn dcommit看起來好像沒什麼問題,它只是在重建中的Git SVN倉庫提交。如果你使用的是svn co SVN倉庫,你會看到相同的提交。

我懷疑你已經從其他地方克隆了Git存儲庫,或者推送了存儲庫,正如你有一個origin/master分支的事實所表明的那樣; git-svn分支不會被添加到origin遠程下。

換句話說,我沒有看到任何東西引起報警。一切似乎都按預期工作。

+0

也許我需要提供更多信息。假設有50個git回購。人們在推拉等等。現在,從其中一個回購渠道,我想能夠拉動一些變化,然後推到svn。始終從一個git回購,並始終只推動svn。按照上面的步驟,只要在'git svn dcommit'中,一個repo現在有兩個不同的提交(見消息),所以它不再處於可以從其他git repos中提取的狀態。 – gman 2012-07-25 05:00:43

+0

@gman git-svn旨在被*一個存儲庫*用於與Subversion存儲庫進行互操作。使用git-svn創建的存儲庫不是被多個人共享的。 – cdhowie 2012-07-25 17:06:58

+0

我不與多人分享svn。我與多人共享git。唯一一個git,每次都是同一個git,將與svn交互。這個git將採用最新的'master'並將其推送到svn。 – gman 2012-07-26 20:35:07

2

一切都很好。 'origin/master'和git-svn之間沒有關係,它使用refs/remotes/git-svn來反映SVN狀態。 'master'和'origin/master'是分開的,因爲git-svn不會觸及'origin/master',而是用'通常'相同的內容提交'master'中的提交,但用'git-svn-id'簽名替換提交消息(所以sha-1哈希以這種方式改變)。

+0

然後我仍然迷路,因爲如果我試圖做'混帳拉; git svn dcommit'從git推送最新的提交我得到錯誤。 – gman 2012-07-25 17:22:00

+1

也許那麼SubGit會是一個更好的解決方案。它爲SVN存儲庫創建一個Git接口,以便每一次都能自動轉換爲SVN。 – 2012-07-25 17:59:46