2009-09-25 39 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