2009-09-25 40 views
1

我一直在使用Subversion作爲我的源代碼控制,與git結合使用來部署(推送)到heroku。我的模式是:從遠程Subversion存儲庫的最新版本更新本地工作副本。然後做git commit和git push heroku(Git被設置爲忽略.svn的東西)。這個工作副本我只用於推送到heroku,我有另一個Subversion文件夾進行實時開發,並提交到遠程Subversion存儲庫進行跟蹤。從Subversion轉換到Git,我如何優雅地推向heroku?

我現在已經完全切換到git。我做了一個從Subversion的完整導入到一個新的遠程git倉庫。我已經成功地開發了git repo(origin)的本地工作副本,並在適合我的時候推送更改(也與其他開發人員合作,但我基本上都在運行該操作)。

我的問題:

現在我想回到我以前一直使用推到的Heroku我的其他的git的工作副本(已的.svn /東西在它)。我正在考慮將我的新git存儲庫作爲.git/config中的[origin]條目添加到我的新git remote中,並將其推送到heroku,但我想知道它是否會嚇倒。

它會嘗試併合並得到困惑不是嗎?而且,即使拉動起作用,heroku遠程控制器也會因爲一些新的git repo而產生的推動感到困惑嗎?

我可以將工作副本(用於從subversion推送到heroku)重新制作(刪除),然後製作新的git存儲庫的新副本,然後將heroku添加到.git/config中。但是我擔心推動heroku仍然會讓它感到困惑,因爲我曾經從不同的工作副本推送。

任何建議將是偉大的!

在此先感謝!

回答

1

如果我正確理解你,你想切換回原SVN倉庫作爲你的工作副本,並且你想保留舊的SVN歷史記錄?

有幾個選項可用。

  1. 推最近從Git倉庫到Heroku的更改,然後切換到舊的存儲庫,並從Heroku的拉動。這將使您的舊版本庫保持最新狀態。

  2. 暫時更改舊存儲庫配置文件中的URL以指向新存儲庫的本地路徑。從那裏取出最近的更改,然後在完成時恢復到Heroku URL。這也將使您的舊版本庫保持最新狀態。

第一個選項是最方便的,第二個選項是漫長的。無論哪種方式,您都將擁有包含所有歷史記錄的最新本地存儲庫的相同淨結果。在任何一種情況下都可以處理剩餘的新存儲庫。

編輯: 爲了解決有關的Heroku是否會在意的提交,總之,沒有在Heroku庫是接受身份驗證的用戶提交另一git倉庫的起源您的問題。

只要憑證是正確的,原始存儲庫並不重要。這是關於DVCS的美妙之處 - 沒有一個控制或可破壞的存儲庫 - 您現在完全可以在另一臺機器上從Heroku克隆並繼續從那裏進行工作。只要您的憑證相同,歷史記錄就會顯示您推送的所有提交,但不關心從哪裏提交。

如果你的願望是簡單地使用一個乾淨的倉庫來處理,新的將是最喜歡的。舊的可以刪除沒有不良影響。

爲了證明這一點 - 檢查SHA-1哈希在新舊版本庫中的提交,並且您將看到它們是相同的。散列對於所有提交都是唯一的,並且可以隨時用於檢查代碼完整性。對於任何給定的哈希,永遠不會有一個以上的更改。

  • 作爲一個便箋,存儲庫是可移植的,因爲它是完全自包含的,可以在存儲空間中自由移動,甚至可以在外部存儲器上使用,例如USB拇指驅動器。
+0

感謝您的回覆。 其實我只是想知道如果 a)Heroku將能夠處理從我開始使用一個全新的git存儲庫的推動。 b)如果我可以利用我舊的Subversion工作文件夾,其中包含我不再需要的所有.svn垃圾,或者我應該刪除它並克隆我的新git存儲庫,然後從那裏推送到heroku 。 最大的擔憂是,heroku會如何對來自全新git存儲庫的「推送」做出反應(儘管它將是相同的應用程序,並且大部分是相同的代碼)。 – Zaqintosh 2009-09-27 05:47:15

+0

我對你的目標不太清楚,但是在答案中增加了一些註釋。 +1這個問題,但如果你對它進行了重新說明,所以目標更清晰,我會改變我的答案來反思。 – Squelch 2009-09-28 06:18:47