Choosing VCS for Single Developer, Small Projects, Two PC's, Two Locations
-
What?! :confused:
Yes, it's true. Read:
Quote:
9. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. For more information, see www.microsoft.com/licensing/userights. You may not • work around any technical limitations in the software; • reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; • make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation; • publish the software for others to copy; • rent, lease or lend the software; or • use the software for commercial software hosting services.
The Express editions of Visual Studio don't get Source Control until the release of version 11 and TFS Express. Yes, you heard that right, Team Foundation Server Express[^] edition.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
OK, slightly confused - does that answer assume I am trying to integrate whatever I end up using with VS Express? If so I think I get that, since it isn't designed to work with extensions then I can imagine the licence restrictions refer to not doing so (not having read all 9x10^6 pages). But...if I was happy to not have IDE integration but just be able, when I've finished a coding session, to push the changed files to an online repository (be it a specific VCS repository or otherwise, like GitHub for example) then what would my options be? Thanks, Mike
You can use anything you want, so long as it's not integrated with Visual Studio Express. Just Google for "online SVN" and you'll come up with a list of them, as well as discussions on their pros, cons and limitations.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
It's easy to set up an SVN server if you have an Internet-accessible address; if not you may still have to VPN to get access to the source control. I use VisualSVN because ... well, no particularly good reason actually, but it works fine. I've heard good things about GIT or Mercurial (similar concepts), but I haven't experienced them directly. If you don't have a machine which is externally visible then you may want to investigate SVN (or GIT) hosting. I think there are some places you can get it for free.
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
You may find that Dropbox (free here[^]) is the best way to do it. It's not version control (although it does have some limited ability to do that) but you could keep your codebase in it and have it automatically synchronised across as many machines as you wish.
Phil
The opinions expressed in this post are not necessarily those of the author, especially if you find them impolite, inaccurate or inflammatory.
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
Thanks for all the answers. I've looked at Git (not yet GitHub) and Bazaar (plus looked into Launchpad a little). When I installed both of those it felt a little like overkill with the consequent learning curve in order to do something fairly simple, hence this thread to see if there was something else that was built for a more simple job, rather than being big and flexible (but complex) enough for any and every size of project. Remember I haven't used VCS for software projects, so this is all new to me, commit, branch, fork, trunk etc. - at a high level easy enough to understand but when you have something practical to do it's not that easy to actually implement it if you've never done it before! So, someone said "You can use anything you want" - I guess what I was hoping for was something like, "When you just need something simple, this tool is great...", even if it didn't upscale that well (or at all) should I ever want to get into something more serious. So, if there is a specific answer like that - great :) If not then I guess I'll just have to plump for one and break it a few times until I learn how not to break it... Mike
-
Thanks for all the answers. I've looked at Git (not yet GitHub) and Bazaar (plus looked into Launchpad a little). When I installed both of those it felt a little like overkill with the consequent learning curve in order to do something fairly simple, hence this thread to see if there was something else that was built for a more simple job, rather than being big and flexible (but complex) enough for any and every size of project. Remember I haven't used VCS for software projects, so this is all new to me, commit, branch, fork, trunk etc. - at a high level easy enough to understand but when you have something practical to do it's not that easy to actually implement it if you've never done it before! So, someone said "You can use anything you want" - I guess what I was hoping for was something like, "When you just need something simple, this tool is great...", even if it didn't upscale that well (or at all) should I ever want to get into something more serious. So, if there is a specific answer like that - great :) If not then I guess I'll just have to plump for one and break it a few times until I learn how not to break it... Mike
Mike-MadBadger wrote:
so this is all new to me, commit, branch, fork, trunk etc.
For small personal projects you probably only need commit (and push, if you use a system like Git/Mercurial), checkout/clone (to get the files the first time), and update/pull to get any changes from the server. But you can hide most of that through a GUI tool like TortoiseSvn/TortoiseGit/Tortoise[insert other VCS here] if you're on Windows.
-
Personally, what I'd like is some sort of "VCS-on-a-stick" -- have everything on a USB device that can be carried around and used on any (Windows) system where I may need it. :cool:
-
Yes, it's true. Read:
Quote:
9. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. For more information, see www.microsoft.com/licensing/userights. You may not • work around any technical limitations in the software; • reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; • make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation; • publish the software for others to copy; • rent, lease or lend the software; or • use the software for commercial software hosting services.
The Express editions of Visual Studio don't get Source Control until the release of version 11 and TFS Express. Yes, you heard that right, Team Foundation Server Express[^] edition.
A guide to posting questions on CodeProject[^]
Dave KreskowiakThat doesn't mean that he can't use a version control system.
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
For my personal projects, I am currently using SmartSVN (a visual Subversion client, $80) with CodeSpaces (a place to store your Subversion repository, $4+/month). CodeSpaces is easy/cheap and allows for both Subversion and Git repositories. It has other features (project management, bug tracking, ...), but I don't use them. SmartSVN is standalone, so it doesn't require integration with Visual Studio or Windows Explorer (I consider that a positive, as I don't want my VCS software messing with my other software).
-
You may find that Dropbox (free here[^]) is the best way to do it. It's not version control (although it does have some limited ability to do that) but you could keep your codebase in it and have it automatically synchronised across as many machines as you wish.
Phil
The opinions expressed in this post are not necessarily those of the author, especially if you find them impolite, inaccurate or inflammatory.
+1 for Dropbox. It does have limited versioning... enough for fooling around. Git is also handy if you're not trying to do anything fancy and don't mind the command line. Between GitHub and other software resource that use git, it's worth having at least some familiarity. Here are a few git-related articles I've featured in the Daily Insider during the last year: Think Like (a) Git Nick Farina - Git Is Simpler Than You Think Adding Git Command Line To Visual Studio
Director of Content Development, The Code Project
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
git, becsue - distributed DVCS are addictive - git is the "lowes common denominator everyone agrees on". It's a pain to learn, and both the built-in and the 3rd party visualizations give me UX flinches. Other than that, it does most things right. DVCS gives you rollbacks on stereoids. But that's not the key: they can change how you work with source code.
FILETIME to time_t
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy -
Thanks for all the answers. I've looked at Git (not yet GitHub) and Bazaar (plus looked into Launchpad a little). When I installed both of those it felt a little like overkill with the consequent learning curve in order to do something fairly simple, hence this thread to see if there was something else that was built for a more simple job, rather than being big and flexible (but complex) enough for any and every size of project. Remember I haven't used VCS for software projects, so this is all new to me, commit, branch, fork, trunk etc. - at a high level easy enough to understand but when you have something practical to do it's not that easy to actually implement it if you've never done it before! So, someone said "You can use anything you want" - I guess what I was hoping for was something like, "When you just need something simple, this tool is great...", even if it didn't upscale that well (or at all) should I ever want to get into something more serious. So, if there is a specific answer like that - great :) If not then I guess I'll just have to plump for one and break it a few times until I learn how not to break it... Mike
-
That doesn't mean that he can't use a version control system.
Tell that to Microsoft. According to them, you also can't create something that will offer that functionality either. Just ask the guy who wrote TestDriven.net about that.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
OK, slightly confused - does that answer assume I am trying to integrate whatever I end up using with VS Express? If so I think I get that, since it isn't designed to work with extensions then I can imagine the licence restrictions refer to not doing so (not having read all 9x10^6 pages). But...if I was happy to not have IDE integration but just be able, when I've finished a coding session, to push the changed files to an online repository (be it a specific VCS repository or otherwise, like GitHub for example) then what would my options be? Thanks, Mike
I use TortiseHG[^] and BitBucket[^] for version control (I have VS 2010 Ultimate, BTW). TortiseHG is kind of finicky to get working, but once you know how to use it, you can get changes pushed online rather quickly.
public class SysAdmin : Employee
{public override void DoWork(IWorkItem workItem) { if (workItem.User.Type == UserType.NoLearn){ throw new NoIWillNotFixYourComputerException(new Luser(workItem.User)); }else{ base.DoWork(workItem); } }
}
-
Tell that to Microsoft. According to them, you also can't create something that will offer that functionality either. Just ask the guy who wrote TestDriven.net about that.
A guide to posting questions on CodeProject[^]
Dave KreskowiakThen explain Subversion, et al.
-
Then explain Subversion, et al.
I'd love to but there's no explaining lawyer logic! ;)
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
I'd love to but there's no explaining lawyer logic! ;)
A guide to posting questions on CodeProject[^]
Dave KreskowiakBut it's not because you can't extend VS that you are unable to use a version control system. You can use one from the command line or use a client like tortoise. You'll learn more about source control too.
-
(I couldn't find a better forum for this q, hope it's not out of place) I am a hobbyist just having fun trying to do things that seem interesting, so I have a range of small projects. I work on two laptops at two locations and use a network location at both locations for file storage (network drive at work and a NAS at home) for backup reasons. So, to work on one project I end up shuffling updates back and forth on a USB stick or having to crank up the work laptop at home and connect via VPN just to pull the files. I'd like to be able to use something like a VCS to manage this, recognising (and liking) the extra benefit of being able to rollback to previous versions etc. (fallen foul of this once or twice already). I haven't used SVN, GIT, Bazaar etc. before so I'm not at all familiar (yet) with using them - though I'm happy with the general concept of version control, just not as applied to software development nor doing so via the VCS used in software development. Clearly my preference is for something really simple that does the two jobs I described quickly and easily - (a) make it easy to work on two different devices at two different locations without shuttling USB sticks back and forth and (b) rollbacks. If it has other features then that's great but not if they come at a significant cost in complexity. So, is there anything you could recommend? Or do I need to make some compromises? (Using VS Express so cannot install AddIns but can add menu commands via the External Tools functionality). Thanks, Mike
Don't know if anyone already suggested that, but I'm using Plastic SCM and I am quite satisfied by the product. It has some "advanced" futures, but it's quite simple for the base use. It's free up to 15 "client" installations, so it may be a good solution for you. It will optionally add scm actions to controlled files and folder via explorer. Only "limitation", you won't have integration in VS Express.. note: in any case, you will have to register and obtain a free license. Alberto