62

Subversion:是否可以在不推送它们的情况下提交本地修订,并在以后推送它们 - 或者缺少这个功能为什么它被称为“集中式”?

4

8 回答 8

56

使用 Subversion 无法进行本地提交。

这是因为,作为一个集中式版本控制系统,您的本地工作副本没有服务器所拥有的关于过去修订、日志条目等的所有信息,如果它是分布式版本控制系统 (DVCS),它将拥有这些信息。

Subversion 工作副本包含所有文件的副本,因为它们已被签出,因此您可以在不联系服务器的情况下恢复更改的文件。

如果你真的想做本地提交,你应该看看SVK,它建立在 Subversion 之上并提供类似 DVCS 的功能。

于 2009-07-03T22:47:57.613 回答
35

上面的大部分内容已经有些过时了,因为这个问题在谷歌搜索“svn local commit”时很受欢迎,所以这里有一个更新:

考虑使用包“git-svn”(如果您不了解 git,请与“git-gui”一起使用)通过完整的远程 SVN 集成使本地提交既可行又容易。一个不错的概述/教程/用例在这里。我刚刚开始在 Sourceforge 项目中使用这个过程,所以我还不能报告任何问题。确保正确获取作者文件!

编辑:更新链接。谢谢,hdl!

于 2011-03-20T03:38:15.730 回答
5

如果您将 SVN 服务器与 GIT 或 Mercurial Bridge 连接,您可以这样做。由于 GIT 和 Mercurial 能够进行本地提交,因此您可以像这样使用它们。也许查看 git-svn 或类似的东西(我记得有一个 bazaar-svn 但不确定)。

于 2009-07-03T22:52:25.747 回答
3

这就是为什么它被称为中心化。您可以尝试在 repo 中使用 repo。一个是本地的,另一个是远程的。然后,您将整个内部存储库提交到远程。

于 2009-07-03T22:49:28.810 回答
2

正如其他人所说,没有。

强烈建议尝试使用 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 是一个不错的方法!

于 2009-07-03T23:30:43.020 回答
2

除了 BobC 的回答,您将使用hgsubversion.

于 2011-07-05T02:31:04.220 回答
1

不!但是 git 可以做到这一点,您可以使用 git-svn 与原始存储库保持同步。

于 2009-07-03T22:53:00.893 回答
1

为了两全其美,SVK构建在 Subversion 之上,但维护本地状态,以便您可以进行本地提交......

于 2009-07-03T22:55:31.140 回答