3

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

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

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

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

我猜最后一个选项是为这个特性创建一个新分支并进入一个“签入/更新”循环。然而,这些都显示在 trac 历史中造成污染。

有更好的想法吗?或者我缺少什么?

4

8 回答 8

7

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

于 2009-02-21T22:49:40.130 回答
6

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

因此,您基本上是“使用颠覆离线”并使用 GIT 提交完成您的工作。完成后,将整个套件和 kaboodle 签入您的颠覆后备箱。

功能分支在 Subversion 中是轻量级的,非常适合隔离此类特定功能的工作。如果您使用的是 subversion 1.5 或更高版本,那么整个同步和合并过程比使用 1.4 时要容易得多。

于 2009-02-21T22:51:03.700 回答
5

分支是干净的解决方案。并且具有额外的优势,即在您进行这一巨大更改时为您提供备份。更不用说,机器之间未来更改的轻松同步。

但是,您可能只需压缩整个工作目录并将其转储到另一台机器的某个位置即可。

于 2009-02-21T22:46:47.657 回答
1

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

此外,您似乎在间隔检查代码,并且如果您的硬盘驱动器崩溃,分支也可以防止数据丢失。

于 2009-02-21T22:47:12.647 回答
1

不是最后一个选项,第一个选项:如果真的有这么多的变化,你早就应该创建一个功能分支。

您仍然可以通过从工作副本到服务器上的分支目录的 svn 复制来做到这一点,因此您不需要“签入/更新循环”,只需一个签入,一个更新/切换,真的。

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

于 2009-02-21T22:47:21.290 回答
1

如果您只需要桌面上的副本,我发现 Live Sync 非常适合这种情况。我将它设置为在我的笔记本电脑和两台台式机上复制我的结帐文件夹,这使我在三台机器上的状态完全相同。这一切都在后台连续发生。

或者你可以去一个分支,并确保在移动到桌面之前不要忘记在笔记本电脑上提交任何更改。:-)

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

于 2009-02-21T23:23:52.077 回答
0

好吧,大多数人会争辩说,如果您的“更改集很大”,您绝对应该检查更改(在必要的分支中)!

于 2009-02-21T22:47:45.797 回答
0

你可以试试SVK。从博文和 SVK 站点来看,典型的 SVK 使用场景是

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

我没有任何使用 SVK 的实践经验。但我认为它符合你的情况。这篇博客文章更详细地描述了它http://www.bieberlabs.com/archives/2004/11/30/using-svk/

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

于 2009-02-24T03:57:16.800 回答