1

我一直在使用 Subversion 进行源代码控制,并结合 git ONLY 部署(推送)到 heroku。我的模式是:从远程颠覆存储库的最新主更新本地工作副本。然后执行 git commit 和 git push heroku (Git 被设置为忽略 .svn 的东西)。这个工作副本我只用来推送到 heroku,我有另一个 subversion 文件夹用于进行实时开发,并提交到远程 subversion 存储库进行跟踪。

我现在已经完全切换到 git。我从 subversion 完全导入到一个新的远程 git 存储库。我已经成功地处理了 git repo(origin)的本地工作副本,并在适合我的时候推送更改(也与其他开发人员合作,但我基本上运行操作)。

我的问题:

我现在想回到我以前用来推送到 heroku 的其他 git 工作副本(其中也有 .svn/ 东西)。我正在考虑将我的新 git 存储库添加为 .git/config 中的 [origin] 条目。从我的新 git 远程中提取最新更改,然后推送到 heroku,但我想知道它是否会吓坏.

它会尝试合并并感到困惑,不是吗?而且,即使拉动有效,heroku 遥控器也会对源自某个新 git 存储库的推送感到困惑吗?

我可以破坏(删除)该工作副本(用于从 subversion 推送到 heroku),并为我的新 git 存储库创建一个新克隆,然后将 heroku 添加到 .git/config。但我担心推送到 heroku 仍然会导致它感到困惑,因为我曾经从不同的工作副本推送。

任何建议都会很棒!

提前致谢!

4

1 回答 1

1

如果我理解正确,您想切换回以前的 SVN 存储库作为您的工作副本,并且您想保留旧的 SVN 历史记录?

有几个选项可用。

  1. 将新 Git 存储库中的最新更改推送到 Heroku,然后切换到旧存储库并从 Heroku 拉取。这将使您的旧存储库保持最新。

  2. 临时更改旧存储库配置文件中的 URL 以指向新存储库的本地路径。从那里提取最近的更改,然后在完成后恢复到 Heroku URL。这也将使您的旧存储库保持最新。

第一个选项是最方便的,第二个是很长的路要走。无论哪种方式,您都将获得包含所有历史记录的最新本地存储库的相同最终结果。在任何一种情况下都可以处理多余的新存储库。

编辑: 为了解决您对 Heroku 是否会关心提交来源的担忧,简而言之,Heroku 上的存储库不是另一个接受来自经过身份验证的用户提交的 git 存储库。

只要凭据正确,原始存储库就无关紧要。这是 DVCS 的美妙之处 - 没有一个控制或可破坏的存储库 - 您现在完全有可能在另一台机器上从 Heroku 克隆并从那里继续工作。只要您的凭据相同,历史记录就会显示您推送的所有提交,但不关心来自何处。

如果您希望简单地使用干净的存储库来使用,那么新的将是最喜欢的。旧的可以删除而不会产生不良影响。

为了证明这一点 - 检查新旧存储库中的提交的 SHA-1 哈希,您会发现它们是相同的。哈希对于所有提交都是唯一的,可用于始终检查代码完整性。对于任何给定的哈希,永远不会有超过一次的更改。

  • 附带说明一下,存储库是可移植的,因为它完全是独立的,可以在您的存储空间上自由移动,甚至可以在 USB 拇指驱动器等外部存储设备上使用。
于 2009-09-27T05:04:54.753 回答