我只是想知道一些事情,我正在与其他几个程序员一起工作,我们都使用SVN作为项目,我将svn树下载到本地计算机上,并且每当我更新一些东西时我承诺,到现在为止,一切都很好。SVN承诺/更新存储库
如果:
- 我的工作我的本地版本,在XXX.cpp(VERSION1),而XXX.cpp的别人上传的版本2更新的东西,然后我上传我的版本,将我的“旧”版本覆盖较新的版本?
感谢,
我只是想知道一些事情,我正在与其他几个程序员一起工作,我们都使用SVN作为项目,我将svn树下载到本地计算机上,并且每当我更新一些东西时我承诺,到现在为止,一切都很好。SVN承诺/更新存储库
如果:
感谢,
SVN将尽最大努力合并开发人员所做的更改。如果你在文件的不同部分工作,它很可能会处理这个没有问题。如果两个开发人员都在更改文件的相同行,或者由于某种原因合并比SVN处理更复杂,它会将文件标记为冲突,并要求您在您手动合并冲突(使用diff工具)尝试更新您的本地更改。
基本上,当您尝试提交时,SVN会告诉您有更新的更改,您应该先更新。当你更新它将在你的本地机器上进行合并。在提交之前,需要修复冲突的文件。一旦他们修复并且所有更改合并,您都可以提交。
第二个人犯了相同的修订将得到一个“SVN冲突”的错误同一个文件,这将是由他们来解决它。见例如这个:http://ariejan.net/2007/07/04/how-to-resolve-subversion-conflicts/
我认为SVN会检测到当前文件与您正在使用的基本版本不匹配,并要求您进行手动合并。
它不会覆盖它,但您的修改版本将成为最新版本。您需要将您的更改从工作副本合并到以前的修订版本。
如果您正在使用相同代码库的更改进行单独的逻辑单元工作,我建议您分支您的任务并在完成后从分支合并到中继。
大多数情况下,SVN会尝试合并这些更改。如果这是不可能的,它会给你一个消息,说明你的提交失败了,你需要在尝试重新提交之前更新你的签出。
新的更新可能会导致需要解决的冲突。 虽然它不会覆盖以前的更改。
建议在提交之前始终更新。
这是版本控制软件的要点之一,这是会发生什么:
A
A
最后一部分是在事情变得棘手 - 没有人愿意一直做这个。
另外,SVN有一个可怕的习惯,它在合并时有时会全部损坏源文件,污染代码为<----- mine
和<------ theirs
左,右和中心 - 在所有情况下都需要注意。
有一些或情况可以解释,以帮助教育你在这方面,但是这涵盖了一般的想法和许多其他知识将与经验和实践。
如果我们在办公室没有咖啡,该怎么办? – snoofkin 2011-04-04 12:38:56
寻找新的雇主,结束。 – 2011-04-04 12:39:35
其实第二个开发者不知道在他提交之前文件是否被别人修改过。只要他提交了,它就会发出版本冲突的警告(因为他修改过的文件版本已被其他人修改过)。
然后你可以解决冲突,但我认为每个开发者都应该在每次提交之前执行SVN-UPATE,然后你可以克服任何不需要的情况。
你的意思是说,更新我的本地版本,然后提交我自己的更改? – snoofkin 2011-04-04 12:39:51
是的。这是为了获得可能发生的变化。通过更新,这些更改将由SVN合并(如果它不自动工作,则由您自行合并) – user492238 2011-04-04 12:46:48