0

I have a team of developers that all work remotely, from home (no intranet or extranet). We have dedicated managed hosting through a hosting provider, and they do not offer TFS. The production web and sql server are behind firewall at host and prevent remote connection outside their network. We connect via SFTP and/or VPN.

We're developing in ASP.Net MVC, VS 2012, and I'm looking for suggestions on source control options for this type of environment.

Any feedback is appreciated.

devnuts
  • 137
  • 2
  • 14
  • 1
    possible duplicate of [Source Control Options](http://stackoverflow.com/questions/11616395/source-control-options) – Ken White Apr 09 '13 at 23:10
  • Thanks, Ken. I saw that, but it doesn't appear to be the same environment, with all remote developers, and no internal network. – devnuts Apr 10 '13 at 00:26
  • You don't need an "internal network". Almost all version control systems work via the internet or a VPN connection just fine. Any and all of them discussed there would work. SVN, git, and Mercurial all work in your scenario, which means the other question applies fully. :-) – Ken White Apr 10 '13 at 00:31
  • I understand I don't "need" an internal network. Just wondering if there is one solution better than the other. As well as considering ease of use, since I have not used version control in over 12 years. :0 – devnuts Apr 10 '13 at 00:39
  • "Which one is best?" questions are inappropriate here, unless you post information about a couple of them you've decided might fit your needs and have *specific* questions about differences between them. As it is, this is a "post a list of things for me to consider", and "shopping list" questions are off-topic here. There are Meta posts [here](http://meta.stackexchange.com/q/139618/172661) and [here](http://meta.stackexchange.com/q/158809/172661) that explain the reasons. – Ken White Apr 10 '13 at 00:50
  • Hi again, Ken. That is what I posted below to Paul. Thanks for your feedback. – devnuts Apr 10 '13 at 11:07

1 Answers1

1

I really like Distributed Version Control Systems for stuff like this. Mercurial is my favorite, for no particularly good reason other than I learned it first.

This allows your remote staff to have essentially a full copy of the source tree on their workstations which really eliminates any friction that is introduced in a remote system due to network pokiness.

The downside is that you have to be on top of the source control management, by ensuring that only mature change sets are promoted into build streams, and reducing conflicts with various changes. Depending on how you look at it, this could be a benefit because it forces you to do something you probably ought to be doing anyway: keeping close tabs on the changes.

Now, for hosting, you can use a lot of different services. I have used Bitbucket, others use GitHub, but there are plenty of others, or you can host your own. I have found that hosting Mercurial internally is not any more difficult than hosting anything else that needs to be backed up.

Good luck!

PaulProgrammer
  • 16,175
  • 4
  • 39
  • 56
  • Thanks, Paul. I've been looking at DVCS, like Mercurial and Git. How would you go about deploying the code changes to production? Would each developer push their own change from their remote location/local repository, or is there a centralized repository that needs to be used to push a build. I've also looked at Beanstalk, which appears to have a built in FTP module for deploying production releases. – devnuts Apr 09 '13 at 23:15
  • 1
    Best practice dictates that you push to production from a centralized repo. Builds are `last_build_tag + (change packages you want to release)`. I like to tag those with intermediate builds, and finally with a prod build against the intermediate build the QC validated. Some folks use branches, but I think that's harder to manage. All this can be automated or assisted depending on the tool chain you have. Check this article for ideas: http://www.infoq.com/articles/DVCS-Enterprise – PaulProgrammer Apr 09 '13 at 23:23
  • Paul, are you familiar with Team Foundation Service. https://tfs.visualstudio.com/ It now includes Git. What's not clear is how to move the build from the central repository to production. Is that a manual FTP step, considering the DVCS environment is outside our hosted network? – devnuts Apr 09 '13 at 23:58
  • I am not familiar with TFS, as I work on Unix/Apple projects. It's my experience that deployment is always a unique process, be it manual or automated or somewhere on the spectrum. It's usually possible to automate just about everything, but that's not always recommended, depending on the project. – PaulProgrammer Apr 10 '13 at 14:49
  • @devnuts Usually you'd have a script on your server do `git pull` or similar to get the latest code from the VCS. – Marnen Laibow-Koser Feb 21 '18 at 15:37