views:

412

answers:

9

We have a few developers working on the same VS2005 solution, but our source control is very bad. (Our company uses Harvest, which we give a vote of no confidence).

Right now, we're all just working off of the files on a shared lan drive. Obviously, this causes some problems. But we think it's better than working locally, and tracking the files we touched in a spreadsheet and merging everything manually. Does anybody have a strategy for merging our changes?

Some of the problems exist because of corporate beaurocracy (like mandating Harvest). Those same policies prevent introducing new tools into our environment. So, strategies that avoid buying/downloading new software would work best for us.

+4  A: 

Treat the share as if it were your source control system. Make the share read-only, which will force developers to get local copies in order to make changes. You then have a somewhat stable version to compare against. This would help facilitate being able to do "merges". "Checking" code in would have to consist of some sort of backup strategy for the file (possibly making a copy of the file with a timestamp and username as part of the new file name) and replacing the original with the new version.

That being said, doing this type of activity without a real source control system that is reliable is going to be difficult and error-prone.

Scott Dorman
+2  A: 

You're probably going to have to download something unless you want to do it by hand. I highly recommend Winmerge. It's free, open source, and probably better for you a small download that doesn't mess things up.

Bryan Anderson
+4  A: 

Get git and install it locally on every dev's machine. Then set the repositories to replicate.

Franci Penov
He already stated that their corporate bureaucracy will not allow introducing new tools. Jim is looking for processes and practices more than technologies.
Raelshark
Does his corporate bureaucracy allow employees to quit, or is he some form of indentured servant? If they can't get source code control right, what are the odds that they respect their developers at all?
Matt Cruikshank
If git is not installed on the server and just on each dev machine, how will they know? it's not like you need admin rights for it to work
Orion Edwards
Install it on thumb drives and put them in you pocket any time the boss shows up.
BCS
+2  A: 

There is a standard unix command-line tool called merge that will fairly intelligently merge two sets of changes to a file. The syntax is:

merge mine older yours

Where "mine" is the file with your changes, "older" is the original file, and "yours" contains someone else's changes.

Not sure if you have a UNIX (or Mac OS X) box lying around to do this on though.

Frank Schmitt
Actually there is no merge, but I think you are referring to the "diff3 -m" command. See http://www.gnu.org/software/diffutils/manual/html_node/diff3-Merging.html
Bruno De Fraine
+1  A: 

Working off of a shared drive is not a good idea, and gets my vote of "no confidence".

It would be too easy to overwrite other's changes, you have no change tracking, no way to branch or tag/label, etc.

crashmstr
+1  A: 

This might not be a viable option, but perhaps you could use a distributed system like bazaar, git, or Mercurial.

The reason I suggest these is that they are very low overhead and can be used with other systems. I know with bazaar the repository is simply a hidden folder added to the directory.

chills42
+4  A: 

Learn to use Harvest. It takes a little effort to get things going smoothly but overall it is an excellent source control system.

I agree with that. A bad source control system is better than no source control at all.
Kena
I don't understand how anyone could call Harvest "excellent", but if it's the best tool you have, then it's the best tool you have.
Kristopher Johnson
Yes, we looked at all of the major packages: Serena, ClearCase, Team Foundation, and many smaller packages. In terms of overall usability Harvest was as good or better than everything else we looked at. It seems that many of the packages we looked at looked really cool at first look but once it came to actually functioning in a production enviroment they fell flat. Harvest, even though it has it's own problems, actually works.
+3  A: 

Another possibility would be Beyond Compare from Scooter. It has two and three way merge and great diff functionality on files and directories. If you want to know a little more about it, listen to the delphi podcast by Jim McKeith.

But like most others I would recommend to either use Git or learn Harvest.If the source control system allows to change its diff application, Beyond Compare would be an excellent replacement.

Ralph Rickenbach
+2  A: 

There are two distinct issues: version control and merging. There's absolutely no excuse to NOT use a version control system. If the company has decided on a solution (for whatever reason), then use it. Not liking it or not "having confidence" in it is not a valid reason for not using it. And using a shared drive to mimic a source code control system is beyond crazy.

Merging is a second issue. You simply need a diff/merge tool. Pick one. How have you gone this long without one?!

Araxis is a great one. Costs a few bucks. The SourceGear folks have been freely distributing their diff/merge tool for some time (the one that comes with Vault). It's also a solid contender. Those are two that I've used that I know are still on the market now. There are others some already have mentioned.

Merging everything by hand is not a tenable solution. Combining that with not using a VCS is a recipe for disaster.

Ed Lucas