Subversion:是否可以在不推送它们的情况下提交本地修订,并在以后推送它们 - 或者缺少这个功能为什么它被称为“集中式”?
8 回答
使用 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 但不确定)。
这就是为什么它被称为中心化。您可以尝试在 repo 中使用 repo。一个是本地的,另一个是远程的。然后,您将整个内部存储库提交到远程。
正如其他人所说,没有。
我强烈建议尝试使用 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
并提交更改(可能搁置你正在处理的内容),但本地提交是一件非常好的事情,搁置也是如此(搁置就像用save还原)
我认为 git 也可以处理这个问题。我听说它不如 bzr-svn 完整,但我无法证实这一点。
但是使用带有 svn 存储库的 DVCS 是一个不错的方法!
除了 BobC 的回答,您将使用hgsubversion
.
不!但是 git 可以做到这一点,您可以使用 git-svn 与原始存储库保持同步。
为了两全其美,SVK构建在 Subversion 之上,但维护本地状态,以便您可以进行本地提交......