Non-server based revision control?
Is there any software out there to do this? Basically revision control/SCM without the use of server software, relying purely on file locking and so on? I just want something simple and lightweight for my own use, but possibly from several different computers.
I have a suspicion that some (or all?) of the distributed systems like darcs behave like this, but I'm not sure. I'm a bit put off darcs by the "theory of patches" (because I don't yet understand it*) and I'd rather have a more traditional approach, just without having to run some server software.
* Besides which, who can take seriously software that is connected to a camp coq? Not me, sweety ;-)
http://en.wikipedia.org/wiki/Darcs#Related
Billy the Fish
February 1st, 2010 7:30am
IIRC, SVN will do file locking.
Colm
February 1st, 2010 7:48am
I happen to recall the same, but all the examples I find about how to run it insist on either using the subversion server of apache. It may be that one needs the server when hosting a networked repository (I tried simply using an NDAS disc and got some horrible problems, although that could admittedly because I had done/configured something wrong).
Billy the Fish
February 1st, 2010 7:53am
subversion server *or* apache.
Billy the Fish
February 1st, 2010 7:54am
If you're on Unix, RCS is ubiquitous and may well be sufficient.
Spaceloid
February 1st, 2010 8:19am
Most DSCM systems will handle that. Just don't push your changes when you're done.
Bunny Funny
February 1st, 2010 8:29am
Bum. Darcs wouldn't work anyway, they've discontinued support for Cygwin. Grrr!
Billy the Fish
February 1st, 2010 9:10am
RCS? Wow, that takes me back...
Billy the Fish
February 1st, 2010 9:17am
I use Mercurial as a dvcs. Works fine, not server-based, although that's easy to set-up. I clone from a "central" repository, then push and merge/update changes back if I'm happy with them, all file-path based. It's written in python, so you need that installed. On Macs, Murky is probably the best client GUI if you need or want one; on Windows TortoiseHg. Git is the other "big" dvcs, but unless it's changed, you need to install all the cygwin/mingw stuff to get it running on Windows. Mercurial is probably easier to understand than Git, and has less of the fanatical "dvcs is the future" fan-base.
If you're on Windows, and don't mind using a server model, probably VisualSVN server is the best way to set up Subversion. Installs Subversion and Apache, and has a MMC admin tool. TortoiseSVN is probably the best for the client (and it's manual is a good explanation of how Subversion works). But Subversion doesn't need to be web-server based. Mac's come with Subversion and Apache pre-installed.
el
February 1st, 2010 9:21am
its manual... ho hum
el
February 1st, 2010 9:21am
I'll give Mercurial and mootone a go, I think. Thanks everyone.
Billy the Fish
February 1st, 2010 10:13am
git
Bot Berlin
February 1st, 2010 10:15am
I thought "git" was server based? Or are you simply insulting him.
SaveTheHubble
February 1st, 2010 10:26am
SVN will work fine for you. The repository can be placed on a network share, and each computer that needs access can simply use the network path to the repository. No need for Apache or the hosting service that comes with SVN.
There might be advantages to using Apache or the SVN hosting thing. I don't know. Maybe it helps with keeping track of the username who checked in files?
If you use SVN, be sure to use TortoiseSVN if you are on Windows. I think if you use TortoiseSVN you might not even need to download the actual SVN server stuff.
Fan boy
February 1st, 2010 10:27am
"thought "git" was server based? Or are you simply insulting him."
git was not originally developed to run in a server engironment by design. Adding server support is extra.
Bot Berlin
February 1st, 2010 10:58am
CVS works great for this, point CVSROOT at your repository and go.
Does SVN really work without a server? Haven't been able to get that working.
CC
February 1st, 2010 10:58am
http://en.wikipedia.org/wiki/Git_(software)
"Like BitKeeper, Git does not use a centralized server. However, Git's primitives are not inherently a SCM system. Torvalds explains,[38]"
Bot Berlin
February 1st, 2010 10:58am
Git, Bazaar, and Mercurial are all solutions to your problem.
Who was that masked man?
February 1st, 2010 12:02pm
"Does SVN really work without a server?"
Yup, you can create a repository and then use file:/// urls to access it. If you've got TortioseSVN you can right-click on any folder to create a new repository.
Wayne
February 1st, 2010 12:03pm
From the browser? The browser doesn't send cgi post and gets to file:// URLs.
CC
February 1st, 2010 1:15pm
No, file urls in Subversion.
Wayne
February 1st, 2010 1:30pm
Yes, we (darcs) have discontinued Cygwin support :-(, but this isn't as horrible as it sounds. We still very much want to have good Windows support. In fact, we plan to have an official Windows binary for the upcoming Darcs 2.4 release (within the next fortnight, we hope). The consequence of not supporting Cygwin is that we do not recognise Cygwin's absolute paths on the command line, so saying darcs push /foo/bar wouldn't work, but darcs push `cygpath /foo/bar` would.
Darcs does not require any special software on the server side. You'll want to have darcs on the remote end if you want to push patches to it.
As for the theory of patches, it's actually quite straightforward if you ignore conflicts. You can think of it as just book-keeping via two operations: patch inverse, and patch commutation. Try my explanation at http://irclog.perlgeek.de/darcs/2009-08-12#i_1387755
I hope some of this helps. Please shout if you have any questions or comments.
Everything's straightforward if you ignore conflicts -- until you actually try to RUN someting.
This attitude could explain much.
SaveTheHubble
February 4th, 2010 8:50am
All I said was that the Darcs theory of patches was straightforward for Billy to understand if he ignored conflicts. If you just learn about patch inverses and patch commutations, you can go very far.
But hang on, you don't even have to understand the theory of patches if you don't want to. The power of Darcs is the simple way it lets you think of revision control: Your repsitory is a set of patches. Patches can be copied from one repository to another. That's all!
Yes, conflicts are tricky; we're still working on it. :-(
It may take years; we're patient. :-)
Darcs conflicts work for everyday stuff, but not the more complicated cases. Right now, if you need to manage long-term branches (where you don't merge your changes in frequently), you should definitely NOT use Darcs.
But if your branches tend to be short-term, I'd give it a try because I think Darcs offers a uniquely simple workflow. You don't have to take my word for it either. See http://wiki.darcs.net/BlogBuzz for what other Darcs fans say about it.
|