什么是subversion/git的好的非分支非本地替代方案?

什么是subversion/git的好的非分支非本地替代方案?,git,svn,version-control,Git,Svn,Version Control,所以,你不会听到我说svn和git不是非常强大和通用的工具,但是对于非本地开发(一个中央网络共享),它不能很好地发挥作用(两个人实际上可以在同一个文件上工作),并且会产生相当大的开销,因此,具体地说,我想知道是否有其他方法可以很好地应用于中央网络共享(使用的主要功能是责备和识别稳定代码和开发代码) 我知道这是一个相当广泛的问题,我希望这属于Stackoverflow的范围,但由于类似的问题没有解决,我决定试一试这个问题 在这些反应中,似乎有一个常见的误解:现在我们正在使用subversion,

所以,你不会听到我说svn和git不是非常强大和通用的工具,但是对于非本地开发(一个中央网络共享),它不能很好地发挥作用(两个人实际上可以在同一个文件上工作),并且会产生相当大的开销,因此,具体地说,我想知道是否有其他方法可以很好地应用于中央网络共享(使用的主要功能是责备和识别稳定代码和开发代码)

我知道这是一个相当广泛的问题,我希望这属于Stackoverflow的范围,但由于类似的问题没有解决,我决定试一试这个问题


在这些反应中,似乎有一个常见的误解:现在我们正在使用subversion,我们正在提交我们的更改,我们正在使用标记来区分版本,并且只将标记的更改推送到生产环境中。此外,似乎有人相信,本地副本在某种程度上是协作开发的圣杯。让我告诉你,如果你在任何时候都只与4个开发者在同一个项目上工作,那么最好是在相同的文件上工作,前提是你没有使用一些古老的低级语言,这些语言需要编译所有代码,一个语法错误就会破坏整个应用程序。诚然,偶尔这也会导致不必要的错误,但总的来说,它工作得非常好,有助于加快开发速度。实际的主要问题在于,如果不同的人在同一个svn签出上进行提交和工作,svn往往会大量中断。此外,还有一些其他容易引起麻烦的事情(svn似乎不喜欢坐在股票上,尽管其中一个答案可能有助于“修复”这一问题),但事实是,所有这些事情都是由以下事实造成的:SVN和GIT都是基于单个开发人员在自己的本地副本上工作的想法,这与我们现在所做的在共享代码基础上紧密结合的开发风格不太相符

通过讨论,我们得出结论,我们可以想象一个更简单、更不先进的源代码管理系统,更适合这种开发风格(例如,一个完全自动的版本跟踪系统,就像用户使用google drive文档的体验+另外一些形式的“标记”文件)我们假设其他人一定也想到了这一点,这就是这个问题的来源。如果您认为我们的开发风格不好,请允许我指出,我们公司目前的效率大约是我们竞争的同类大型web应用程序开发公司的3-5倍(不增长的选择是有意识的),是的,这种设置是帮助达到这种效率的原因之一,因为不管流行的版本控制系统有多漂亮:它们都会增加很多开销。正如我在下面的一条评论中所说的,对于我们来说,设置本地开发环境意味着需要设置大约50x4=200个不同的开发应用程序才能运行。这意味着在每个开发系统上有3个不同的IIS实例(由于我们使用的“加载项”的限制以及此“加载项”的3个不同版本的必要性),一个apache/tomcat实例和一个apache/jetty实例。另外,在这5个实例上为每个开发人员分别添加50个应用程序的不同子集。(我甚至不想考虑如何让这5个实例彼此并行运行,以及如何处理跨应用程序请求)将所有这些与当前的设置进行比较,在当前的设置中,我们只需要每个应用程序的三个不同实例(开发、暂存和生产),这是完全不合理的。我甚至没有提到公司里只有两三个人知道如何设置这些实例。。。顺便说一句,这是一个烂摊子(对于新项目,我们已经从这个烂摊子中迁移出来了,但是对于所有仍然支持的旧项目,这是无关紧要的)

我试图将这个问题尽可能一般化,以防止它只适用于我们,但有些人在一些答案和评论中给出的反应是令人难以置信的傲慢。老实说,我们已经考虑过这个问题,我问了一个相当具体的问题。如果问题是要寻找svn/git的替代方案,那么来回答“使用svn”/“使用git”或“这个问题让我哭了”就太冒昧了。没有offence@David因为和其他人不同,我知道你是诚恳地试图帮助我的,但在看到这些评论后,我认真地考虑过退出stackoverflow


无论如何,我仍然希望有人能给我指出一些完全不同的源代码控制方法,但从表面上看,情况并非如此。也许有一天我会自己写,但现在我没有时间,所以我有点希望别人已经这么做了。

如果没有服务器来管理修改,你就无法阻止两个人同时修改同一个文件。这就是为什么当一个项目中有多个人工作时,不应该在Subversion中使用
文件://
协议的原因。你不应该在网络共享上使用它

对于Subversion,您可以使用
svnserve
过程在包含共享的系统上创建轻量级服务器。它既简单又快捷。甚至可以将其设置为Windows服务。完成后,您可以使用
svn://
协议,并且
svnserve
过程将调整更改

Git在这种情况下可能真的会大放异彩。使用Git,您通常有一个主存储库,可以在其中推送和拉取更改,但实际上使用Git就像使用Subversion一样,这样您就无法获得Git的全部功能

Git允许您拥有多个