如何在Subversion中保存提交?

4
如果我不在线,有时候我想把一些更改打包成一个提交(commit),这个提交保存在工作副本(working copy)中,等到我再次上线时可以真正地提交到代码库(repository)中。如何使用Subversion(可能需要其他工具的帮助)来实现这个功能?
5个回答

4
你可以使用 git-svn 并建立一个本地的 git 仓库,将其与 svn 同步。在离线工作时,你可以对 git 仓库进行本地提交,并在联网后将更改传输到中央 svn。

3
如果您想将一些更改批量提交到单个提交中,我所能想到的唯一选择是生成所有已完成工作的差异(TortoiseSVN有一个选项可以执行此操作,或者如果您熟悉命令行,则可以使用“svn diff”命令),但这只适用于每批次使用不同文件的情况下,否则只能使用一次。
过去,当我不想为非常实验性的功能创建全新的分支,但也不想将其检入到中央存储库时,我曾多次这样做。然后,我可以与他人共享该补丁文件,但这仍然是一种相对脆弱的方法,因为它仅保证应用于我生成它的版本。

1

嗯...如果你已经检出了代码副本,你只需要在本地副本上工作,然后当你重新联网时,提交你的更改。你的电脑只会检查是否有最新版本。或者我在这个问题上漏掉了什么?


1
这并不会为您提供回滚以及单独更改的版本历史记录。 - Georg Fritzsche
问题是,我想为不同的项目进行不同的提交。如果我在联网时提交,我只有一个大的提交,并且会失去其中的历史记录。 - Mnementh

0

尝试将GIT视为仓库控制。GIT离线处理许多操作,因此非常快速和可靠。但是GIT与SVN完全不同,所以你需要进行一些研究。但是,如果您经常离线工作,我肯定会建议您看看GIT :]

http://git-scm.com/


0

SVN不支持此功能,本地离线提交需要自己完成。因此,您需要像git-svn这样的工具,将工作副本扩展为分布式存储库,以实现本地提交。

但是,您可以将提交保存为补丁文件,例如使用TortoiseSVN或者简单地使用“svn diff”将每个步骤保存为补丁文件,它们将像迭代提交一样工作。

当重新联机时,您只需一个接一个地应用补丁并逐步提交即可。


手动保存和应用补丁文件听起来很耗时且容易出错。是否存在一种工具来自动化此任务? - Mnementh
不知道,但你可以很容易地编写脚本来实现。或者只需使用git-svn,虽然会有一些额外的开销,但结果应该是相同的。 - Oliver Friedrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接