Subversion:是否可以在不推送的情况下提交本地修订,并在以后推送它们 - 或者缺乏此功能为什么被称为“集中式”?
无法使用 Subversion 进行本地提交。
这是因为,作为集中式版本控制系统,您的本地工作副本不具有服务器拥有的有关过去修订、日志条目等的所有信息,而如果它是分布式版本控制系统(DVCS),则它会拥有这些信息.
Subversion 工作副本包含签出的所有文件的副本,因此您无需联系服务器即可恢复更改的文件。
如果你真的想进行本地提交,你应该看看 SVK,它构建在 Subversion 之上并提供类似 DVCS 的功能。
上面的大部分内容已经有些过时了,因为这个问题在谷歌搜索“svn local commit”时出现,这里有一个更新:
考虑使用“git-svn”包(如果您不了解 git,则与“git-gui”一起使用)使本地提交既可能又简单,并具有完全的远程 SVN 集成。 这里有一个不错的概述/教程/用例。 我刚刚开始在 Sourceforge 项目中使用此流程,因此我还无法报告任何问题。 请务必正确获取作者文件!
编辑:更新了链接。谢谢,hdl!
如果您将 SVN 服务器与 GIT 或 Mercurial Bridge 连接,您就可以这样做。由于 GIT 和 Mercurial 能够进行本地提交,因此您可以像这样使用它们。也许查看 git-svn 或类似的东西(我记得有一个 bazaar-svn 但不确定)。
这就是为什么它被称为集中式。您可以尝试在存储库中使用存储库。一个是本地的,另一个是远程的。然后,您将整个内部存储库提交到远程。
正如其他人所说,不。
我会强烈建议尝试通过 svn 远程使用任何 janky 的东西。
我还没有充分使用 SVK 来推荐反对它,它看起来足够好。然而,我对在整个项目中使用基于 SVN 构建的任何东西而不造成任何破坏持怀疑态度。我已经足够使用 SVN 了,知道如果你不小心的话,即使是常规的工作周期也可能会毁掉它。
我们在工作中使用SVN。我一直在使用 bzr 和 bzr-svn 进行所有交互,它工作得非常好。我的工作流程是这样的:
$ bzr branch file:///var/svn/project ~/project
(黑客,黑客,黑客)
$ bzr commit -m "commit log"
(重复)
当我准备好时
$ bzr push
是的,您没有更新,而是
$ bzr merge
并提交更改(可能会搁置您正在处理的内容),但本地提交是一件非常的好事,搁置也是如此(搁置就像带有的恢复)保存)
我认为 git 也可以处理这个问题。我听说它不如 bzr-svn 完整,但我无法证实这一点。
但是使用带有 svn 存储库的 DVCS 是一个好方法!
根据 BobC 的回答,对于 Mercurial,您可以使用
hgsubversion
。
不!然而 git 可以做到这一点,你可以使用 git-svn 来 与原始存储库保持同步。
为了两全其美,SVK 构建在 Subversion 之上,但维护本地状态,以便您可以进行本地提交...
我能想到的最好的解决方案,无需添加更多修订控制二进制文件,就是为您不想出现在中央存储库中的文件创建一个带时间戳的本地副本。
cp my/changed/File.java my/changed/File.java.`date -I`
我知道这并不能保证它的“安全”,但是如果您有一个包含一些修改的文件想要推送,而其他文件您不想推送但想保留以供参考(例如,对于您尝试过的其他方法),这可能是最简单的解决方法。