将本地Subversion更改转移到另一台计算机的最不痛苦的方法是什么?

时间:2009-02-21 22:42:04

标签: svn tortoisesvn patch

我正在改变我的笔记本电脑。它尚未准备好提交到存储库,但我也想继续在我的桌面上工作。我的更改集非常大,不仅包含修改,还包含新文件和已删除的文件。

我可以将完整的本地工作副本复制到另一台机器上并进行更改。然而,这听起来像一个肮脏的解决方案(因为我在另一台机器上污染元数据),而且我也在不必要地转移构建工件。

我尝试使用TortoiseSVN传输.patch文件,但它一直抱怨“补丁属于较旧的版本”(不是真的,你为什么关心?)或“行不匹配”(是的,他们不是因为我改变了他们)。我根本不喜欢“连续错误弹出”体验。

我不想安装Cygwin,因此命令行补丁是不可能的。

我猜最后一个选项是为此功能分配新分支并进入“checkin / update”循环。然而,这些在trac历史中显示出在那里产生污染。

有更好的想法吗?或者我遗失的任何东西?

8 个答案:

答案 0 :(得分:7)

您是否尝试过创建新分支并使用svn switch。它会将您转移到存储库的不同部分,并在您从初始工作版本分支时维护您的更改。

答案 1 :(得分:6)

至于替代方法,您可以添加GIT。 GIT的分布式源代码控制模型允许您在桌面和笔记本电脑之间来回推送变更集。由于GIT在本地文件系统上管理其变更集信息,因此您在任何一方进行的提交都不会出现在您的TRAC系统正在监控的流中。

所以,你基本上是'使用subversion离线'并使用GIT提交完成你的工作。完成后,检查整个工具包和kaboodle到你的颠覆主干。

功能分支在Subversion中很轻量级,非常适合像这样的特定功能。如果您使用的是subversion 1.5或更高版本,则整个同步和合并过程比使用1.4更容易。

答案 2 :(得分:5)

分支是一个干净的解决方案。并且还有一个额外的好处,就是在您进行这一巨大变化时为您提供备份。更不用说,轻松同步机器之间的未来变化。

但是,您可能只需要将整个工作目录压缩并将其转储到其他计算机上的某个位置即可。

答案 3 :(得分:1)

我会为此创建一个临时分支。这样,您只使用SVN工具,而不是污染元元素或复制工件。

此外,看起来您正在间隔检查代码,并且如果您的硬盘崩溃,分支也可以防止数据丢失。

答案 4 :(得分:1)

不是最后一个选项,第一个选项:如果真的有这么多变化,你应该在很久以前创建了一个功能分支。

你可以通过从服务器上的工作副本到分支目录执行svn复制来实现这一点,这样你就不需要一个“签入/更新循环”,只需一个签入,只需一个更新/切换,真的。

像     svn copy MyWorkingCopy svn:// theserver / project / branches / features / my-feature-branch

答案 5 :(得分:1)

如果您只需要桌面上的副本,我发现Live Sync可以完美地适应该场景。我已将其设置为在我的笔记本电脑和两个桌面上复制我的结帐文件夹,这使我在三台计算机上的状态完全相同。这一切都在后台不断发生。

或者您可以选择分支机构并确保在移动到桌面之前不要忘记在笔记本电脑上进行任何更改。 : - )

编辑:响应评论 - 是的,如果您在两台计算机正在同步的过程中开始编辑文件,则可能会遇到麻烦。最糟糕的情况是在其中一台机器上松开一些编辑。在实践中,这种情况发生的可能性非常小。

答案 6 :(得分:0)

好吧,大多数人都会争辩说,如果你的“变化集非常大”,你一定要检查(在必要的分支中)的变化!

答案 7 :(得分:0)

您可以尝试SVK。在博客文章和SVK网站上,典型的SVK使用场景是

  • 镜像现有的远程存储库,
  • 然后在您的计算机上创建分支
  • 在这些分支上本地工作,
  • 完成后,将它们合并回镜像主干
  • 最后一步将透明地更新远程存储库。

我没有任何使用SVK的实践经验。但我认为它符合您的情况。此博客文章详细介绍了http://www.bieberlabs.com/archives/2004/11/30/using-svk/

我认为可以使用Windows版本的SVK(SVKWin32),然后TortoiseSVN可以使用存储库的本地镜像进行更新/提交。