We\'re looking at moving from a check-out/edit/check-in style of version control system to Subversion, and during the evaluation we discovered that when you perform an Update ac
It's in the FAQ: How can I prevent Subversion from doing automatic merges?
- In TortoiseSVN->Settings->General->Subversion configuration file, click on the edit button.
Change the
[helpers]
section by addingdiff-cmd = "C:\\false.bat"
(note the double backslash)
Create the file C:\false.bat which contains two lines
@type %9 @exit 1
I would suggest you should learn to work with the natural Subversion model if at all possible. In practice we find conflicts are rare, and the type of logic conflict you talk about almost non-existent (I can't recall an instance in the last 4 years in our repository).
Team members should check-in changes on as small a scale as possible (whilst maintaining correctness) rather than batching up a whole days work to just check it in once. This will reduce the possibility of stepping on someone else's work.
If you are concerned about about a particular change you are making Subversion does provide a locking mechanism to let you prevent other changes to the file. See the Red Book chapters on locking.
The best way around this is to educate the developers. After you do an update in TortoiseSVN it shows you a list of affected files. Simply double clicking each file will give you the diff between them. Then you'll be able to see what changed between your version and the latest repository version.
Here is a trick for TortoiseSVN:
How to turn off “auto-merge” in Subversion
Trick for svn.exe is to set svn external diff tool to a program that will constantly fail.
svn --diff-cmd=/bin/false
If external diff program fails, svn concludes that conflict is unresolvable and wouldn't merge it.
This is why automated (unit) testing is a fundamental part of distributed software development. In the example you give, at least one unit test should fail on svn update and alert you to the error.
Remember what Subversion is: a version control system, not a perfectly-working-code-merging-tool.