首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是替代subversion/git的好的非分支的非本地替代方案?

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

Stack Overflow用户
提问于 2013-04-17 14:14:28
回答 4查看 801关注 0票数 0

所以,您不会听到我说svn和git不是非常强大和通用的工具,但是对于非本地开发(一个中心网络共享),它不能很好地发挥(两个人实际上可以处理同一个文件),并造成相当大的开销,所以我想知道是否有其他的方法可以很好地在中央网络共享上工作(主要使用的特性是指责和识别稳定的代码和开发代码)。

我知道这是一个相当广泛的问题,我希望这是在Stackoverflow的范围之内,但由于类似的问题没有结束,我决定让这个问题试一试。

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

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

我试图使这个问题尽可能笼统,以防止它只适用于我们,但有些人在一些答案和评论中所作的反应是非常傲慢的。老实说,我们考虑过这个问题,我问了一个相当具体的问题。如果这个问题是想要一个svn/git的替代方案,那么来回答这个问题实在太冒昧了:“使用svn”/“使用git”或者“这个问题让我哭了”。“不要冒犯”大卫·W.,因为和其他人不同,我知道你真的想帮忙,但我看到这些评论后,就认真地考虑过放弃堆叠溢出。

无论是哪种方式,我仍然希望有人能为我指出一些完全不同的源代码管理方法,但从外观上看,情况并非如此。也许有一天我会自己写,但现在我没有时间写,所以我希望别人已经写过了。

EN

回答 4

Stack Overflow用户

发布于 2013-04-17 14:43:18

如果没有服务器来调整修改,那么就没有什么可以阻止两个人同时修改同一个文件了。这就是为什么当您有多个人在一个项目上工作时,不应该在Subversion中使用file://协议。你不应该在净份额上使用它。

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

在这种情况下,吉特可能真的很出色。使用Git,您通常有一个主存储库,在这里您可以推拉更改,但这实际上是在使用Git,就像Subversion一样,您无法以这种方式获得Git的全部功能。

Git允许您拥有多个存储库,每一个库都在相互拉动和推送更改。实际上,您甚至根本不需要一个主Git存储库。这就是为什么Git可能是最好的方式来处理你的设置。

你和你的同事都可以拥有自己的私人Git存储库。你自己办理出入境手续。你们通过电子邮件互相同步。没有服务器。没有Windows共享。两个人同时试图更改同一个文件没有问题。

我使用Dropbox来存储我的Git存储库,所以我可以在家里和工作中使用我的存储库。

Word 'o Warning:如果像这样使用Dropbox,就不能让两个人同时推到这个Dropbox存储库。您可以让多个人做拉,但不能推。

然而,这个Dropbox Git回购并不是我和其他人共享的。是我的也是我的。我把它用在我的电脑上工作,回家,然后继续在家工作。如前所述,我使用电子邮件与项目中的其他人员同步该存储库。

票数 1
EN

Stack Overflow用户

发布于 2013-04-21 08:44:54

其他答案已经指出,一般来说,多个人同时在一台服务器上工作是有问题的。我同意-然而,你写这对你有用,所以我不会争论这一点。

尽管如此,我的版本控制解决方案是:

  • 每个项目有一个存储库,有三个分支(dev、暂存、prod)。
  • 在每个服务器上,总是签出与服务器角色对应的分支(dev/暂存/prod)。

这样,多个人可以在一台服务器上工作。他们只是像往常一样,与任何碰巧在同一系统上工作的同事进行协调。对于Git来说,这有点容易,因为它使只提交工作副本中的更改的子集变得更容易,但是它也可以与SVN一起工作。

代码通过合并在系统之间交换。如果在"dev“中完成了新功能,则可以将"dev”代码合并为“暂存”,然后将“暂存”合并为"prod“。标记可以用于识别适合合并到下一阶段的版本--因此,您不仅可以将最新的"dev“合并为”暂存“,还可以将指向分支"dev”上的旧版本的标记“功能X-dev”合并。

如果您使用Git,如果您必须中断您的工作并正在进行工作,则本地分支可能很有用。然后,您可以将正在进行的工作提交给本地的划痕分支,让工作副本(和主分支)保持干净,以便其他人可以在同一台服务器上工作。当然,这需要临时检查您的划痕分支,因此您需要与在同一系统上工作的其他任何人进行协调。

票数 1
EN

Stack Overflow用户

发布于 2013-04-17 19:52:04

我想知道在中央网络共享方面是否有其他可行的方法。

我担心,但是真正的替代是“改变你懒惰的工作流程和习惯”--你希望(现在)把不兼容的东西结合起来

"50-100个不同的项目“仅仅是50-100个存储库(位于中心位置)和50-100份工作副本在开发盒上(是的,这需要一些创建工作,但这是一次操作)和1(两个在DVCS -推送添加的情况下),开发人员在开发过程中的附加操作-稍后-提交。

将“无管理的无政府状态”替换为定义明确、易于管理的开发过程和公平价格的最低开销

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16062458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档