svn:本地提交

Adr*_*iuk 60 svn commit

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

art*_*urh 54

使用Subversion进行本地提交是不可能的.

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

subversion工作副本包含所有文件的副本,因此您可以在不联系服务器的情况下还原已更改的文件.

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

  • @jskulski:我没有SVK的经验,但是他们的"antiFUD"页面解决了你的问题:http://svk.bestpractical.com/view/SVKAntiFUD (2认同)
  • 这个答案有点误导.这不是因为SVN是集中的,本地提交是不可能的.它只是一个省略的实现细节.将本地提交视为可以批量推送到repo的变更集队列在技术上是可行的(svk显示了这一点) - 它只会将UX更改为SVN变得更加"难以"使用的程度(使用标准工作流程) ).SVN选择优化易用性,而不是功能; 但它可能被攻击到Subversion而不会破坏任何东西. (2认同)

Bob*_*obC 35

上面的大部分已经变得有些过时了,因为这个问题在谷歌搜索"svn local commit"时出现了,这里有一个更新:

考虑使用包"git-svn"(以及"git-gui",如果你不知道git),通过完全远程SVN集成,使本地提交既可行又简单.一个体面的概述/教程/用例是在这里.我刚刚开始在Sourceforge项目中使用这个过程,所以我还不能报告任何问题.一定要让Authors文件正确!

编辑:更新链接.谢谢,高清!

  • 实际上,Mercurial 和 Bazaar 都可以与 SVN 存储库一起使用。因此,如果您不喜欢 git 的界面,请查看这些内容。 (2认同)

Sid*_*der 5

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

  • 其中一个变体是在SVN工作副本中使用'git init',使您的本地提交脱机.之后,您将最终状态(甚至中间状态)提交给SVN.在此之后,您还可以删除.git目录.这意味着您的工作副本将保留SVN工作副本,而不是git-repo. (3认同)