SVN提交/更新存储库

时间:2011-04-04 12:26:36

标签: svn git-svn

我只是想知道一些事情,我正在与其他几个程序员合作,我们都使用SVN进行项目,我将svn树下载到我的本地计算机,每当我更新我提交的内容时,到现在为止,一切都很好。

如果:

  1. 我正在使用我的本地版本,更新XXX.cpp(version1)中的内容,而其他人上传了该XXX.cpp的版本2,然后我上传了我的版本,我的“旧”版本是否会覆盖新版本?
  2. 谢谢,

8 个答案:

答案 0 :(得分:6)

SVN将尽力合并开发人员所做的更改。如果你在文件的不同部分工作,它很可能会毫无问题地处理这个问题。如果两个开发人员都在更改文件的相同行,或者由于某种原因合并比SVN可以处理的更复杂,它会将文件标记为冲突并要求您手动合并冲突(使用diff工具)尝试更新您的本地更改。

基本上,当您尝试提交SVN时会告诉您有更新的更新,您应该先更新。更新时,它将在您的本地计算机上进行合并。在提交之前,需要修复冲突的文件。一旦它们被修复并且所有更改合并,您就可以提交。

答案 1 :(得分:2)

使用相同修订提交相同文件的第二个人将收到“SVN冲突”错误,由他们来解决它。参见例如这个:http://ariejan.net/2007/07/04/how-to-resolve-subversion-conflicts/

答案 2 :(得分:2)

这是版本控制软件的要点之一,这就是将要发生的事情:

  • 有人检入档案A
  • 其他人尝试签入文件A
  • SVN将尝试自动合并文件
    • 如果一切都好,可以喝杯咖啡
    • 哦,检测到冲突(需要人为干预)
      • 由提交者手动检查并确认更改

最后一部分是事情变得棘手 - 没有人愿意这样做。

此外,SVN有一个糟糕的习惯,即有时会在合并时损坏您的源文件,使用<----- mine<------ theirs左侧,右侧和中间点污染代码 - 需要全部关注例。

可以解释一堆或各种情景可以帮助您在这方面进行教育,但是这涵盖了一般的想法,并且经验和实践会带来许多其他知识。

答案 3 :(得分:1)

建议在进行提交之前始终更新。

答案 4 :(得分:0)

我认为SVN会检测到当前文件与您使用的基本版本不匹配,并要求您进行手动合并。

答案 5 :(得分:0)

它不会覆盖它,但您的修改版本将成为最新版本。您需要将工作副本中的更改合并到以前的版本中。

如果您正在处理对具有相同代码库更改的单独逻辑单元,我建议您分支您的任务,并在完成后从分支合并到主干。

答案 6 :(得分:0)

大多数情况下,SVN会尝试合并更改。如果这不可能,它会向您发出一条消息,提示您的提交失败,并且您需要在尝试再次提交之前更新结帐。

新的更新可能会给您带来需要解决的冲突。 但是,它永远不会覆盖以前的更改。

答案 7 :(得分:0)

实际上,第二个开发人员在提交之前不知道该文件是否被其他人修改过。一旦他提交,它将发出版本冲突的警告(因为他已完成修改的文件版本已被其他人修改)。
然后你可以解决冲突但我认为每个开发人员应该在每次提交之前进行SVN-UPATE,然后你就可以克服任何不需要的情况。