2010-03-19 79 views
5

我在我使用Git的只有一個位置是,別人都用svn。我使用'git svn'連接到svn團隊,而且大多數情況下它工作得很好。最近,我已經開始一個項目,最初是我自己的,單獨的git回購,現在我需要將它從svn合併到它。不過,我仍然想繼續在自己的隱私之間調整實施。櫻桃採摘到svn的(或者,如何保持一個項目歷史Git中並釋放在SVN)

那麼,什麼將是最直接的方式櫻桃採摘從我的私人回購一些提交的svn克隆回購?要求是保持完整的本地歷史記錄,並且每次選擇只有一個svn提交。還是有一些壓縮要做?

達到這樣的方法,有沒有辦法讓私人回購作爲另一個產地爲SVN克隆回購?

回答

2

你可以嘗試git graft從你的Git倉庫提交到git-svn倉庫的提交,在git dcommit git svn倉庫之前。

從回購的承諾能夠在一個特殊分支,當all kind of squashing可以發生在以出口更清潔的歷史中分離出來。

1

如果你是目前唯一使用git repo的人,你可以考慮在你創建的空的顛覆克隆之上重新佈置你的所有工作。然後建立一個分支來保持你的推回到顛覆,擠壓每個發佈到它並將其提交回SVN。

對於更深入的解決方案,請考慮直接使用git commit-tree - 提供您想要提交的樹(通過運行git show --format=raw HEAD並查看第二行(「樹」)找到),正確的父提交(無論目前在顛覆)和正確的日誌消息在標準輸入。這是直接使用管道,你可能想編寫一個腳本來爲你做......效果是你已經創建了一個新的提交,其中包含現有提交的文件內容(與cherry-pick相比,由現有提交添加的diff,而不是複製該樹)。

+0

是的,我現在是唯一的git用戶。基調會暗示所有未來的工作將在克隆的svn中完成?克隆的svn回購只是空的......雖然這可能不會改變任何東西。 因此,簡而言之,我可以重新說明我的項目實際上是一個子項目,它將合併到一個包含多個相關項目的單個主幹中。 – Jawa 2010-03-19 13:46:58

+0

沒有理由在從subversion直接克隆的repo中進行這項工作,但是您希望使用以subversion clone作爲父級的分支。您可以通過將重新設置的分支拉回到您的工作存儲庫並使用'git branch -f'將您當前的工作分支設置爲指向您的重新引用的參考來實現此目的。 – 2010-03-20 20:00:49