views:

234

answers:

6

I sometimes code when i'm away from the office. I would like to continue to use the benifits of source control when not connected to the company network.

My ideal system would allow me to checkin revisions to a repository on my laptop that would then sync with our main SVN repository when I connect to the company network. when syncing with the main repository it would be good if the individual check-ins and and comments could be maintained.

I will not always have an internet connection so VPN is not a great solution.

It may be possible to change the configuration of the SVN server if necessary but I would prefer not to.

Does anyone know of any tools that will help me accomplish this?

Thanks

+3  A: 

This is the principle of GIT (a kind of new subversion). Git has local repository. For SVN, I have a VPN to the company, so I can still use the SVN Server from home, maybe this can be a solution to avoid changing of repository system (I know you aren't always connected... but well... without any change it might be VPN or try GIT).

Daok
No, git is not "a kind of new subversion", it is a completely different VCS.
bortzmeyer
+3  A: 

Not sure if standard SVN can do this. I know this is what distributed versioning systems were designed for (amongst other things).

You could try SVK which is basically a decentralized modification to SVN.

Phill Sacre
Right, standard SVN can't do this. But SVK is more than just a modification to SVN, it's a layer on top of SVN that adds these decentralized behaviors.
jmanning2k
Yes, SVK is the proper response to the OP question (I really feel like downvoting on everyone who suggested a different VCS: the OP probably cannot switch the company's VCS at will!)
bortzmeyer
+6  A: 

Check this article:

Using git for offline commits to a subversion repository

CMS
Thanks. Being able to keep the main repository as subversion is a big help. I introduced source control fairly recently and wouldn't want to change systems just as everyone else is getting up to speed.
Dave Turvey
CMS - you look so cool in your picture
I've worked on an open source project this way -- I keep my local repo in Git while the project is kept in SVN. I send patches for significant submissions and git-svn push to the SVN repo for minor housekeeping changes. Git-svn has worked flawlessly for me.
Paul
+1  A: 

Any decentralized/distributed VCS can do that to a certain extend, I'd recommend Mercurial over git because its UI is much closer to svn. I have several svn repositories that I follow and play with Mercurial. Mercurial also has a TortoiseHg utility for windows machines.

Keltia
+1  A: 

The obvious answers are going to be Mercurial and Git.

I'll throw in one from left field: Perforce. While it is not truly distributed like Mercurial or Git, people do miss a wonderful feature:

'Reconcile Offline Work'

It is part of the P4V client. You can be out of the office without an internet connection even. It will not keep track of individual, offline check-ins, but it will allow you to keep track of what has changed. It makes it easy for you to check-in without missing changes once you get back to the office.

As you are mentioning SVN, you probably aren't looking for a commercial solution. But I can't help but recommend it anyway. It blows SVN out of the water.

Mike
I use the 'reconcile' feature insanely often. It's very helpful when I maintain code in my SC and a clients' at the same time. Perforce is very fast. I run perforce on my home server and ssh tunnel to it with my laptop from all my clients (except the odd "here's a laptop, use it not yours" people)
darron
It's also free for 2 users and up to 5 workspaces. I am currently using the free version. The 5 workspaces is the killer... especially when running lots of VMs. :(
darron
I've found that I can slim down the number of workspaces by clearing the host field of the workspace so that it can be used across clients. Then I use the same root for multiple machines. It doesn't get around the problem, but is good for some circumstances when you can do a force sync.
Mike
A: 

in my previous company the svn server was made available through a public domain, but access to the server was strict. You can set up authentication for checking out and commit on your svn server as for the off line commits I would recommend git.

Ronald Conco