So I want to get a project on a distributed version control system, such as mercurial, git, or bazaar. The catch is that I need the Windows support to be good, i.e. no instructions that start off with "install cygwin...". Now I've heard that git's Windows support is decent these days, but don't have any first hand experience. Also, it sounds like the bazaar team has an explicit goal of making it as multiplatform as possible.
Can I get any recommendations?
I use msys-git on windows every single day. Works fast and flawlessly.
Although the newer build has some problems with git-svn, this build (Git-1.5.5-preview20080413.exe) has a working git-svn.
There's a nice comparison between git, hg and bzr in this InfoQ article. They all have their strengths and weaknesses. You'll have to think about your project and your workflows and choose the best fit. The good news is that they're all fairly good.
At last I checked, the only thing you need for Mercurial is Python and to grab a binary package. If you find yourself with more time and want to fiddle / build it yourself, look here.
The only real drawback with HG is its idea of branching .. but for some people that's a major plus.
I like it because its intuitive, easy to install and works on anything that Python does. I don't think that all of the available plugins will work for you, but most should.
I've had the best luck with Bazaar, followed by Mercurial. Never could get Git to work correctly. A quick search shows that Git still requires clunky emulation layers like Cygwin/MSYS, and I can't find any integration tools like TortoiseBzr for Git.
With Mercurial in Windows, I had several minor issues (insensitive paths, symlinks, ). They were usually fixed eventually, but I felt that the same quality of testing was not applied to running on Windows as for the other platforms. Bazaar also had better documentation for integrating with native applications like Visual C.
EDIT: Perhaps add a "dvcs", "distrubutedversioncontrol", "distrubuted"
I've used Mercurial on Windows with no problems. You can use TortoiseHG or just use the command line. Mercurial does require Python, but that is easy to install in Windows as well.
Mercurial Binary Packages
I agree with basszero. I'm using mercurial under windows and it's as easy and reliable as it can get. My development team is spread over Europe (well Dublin and Vienna :-).
We use VPN to commit or sometime the built in webserver (hgserve). Both work fine with no problems out of the box.
Also diff3 open source tool works perfect with mercurial and TortoiseHG out of the box.
If you are concerned about an easy to use interface:
The bazaar folk now include TortoiseBzr in their windows binary package. That's got to be a pretty strong indicator that they think it is up to snuff. I don't know what the maturity/stability of TortoiseHg is, but there certainly isn't a decent GUI interface for git yet, and the MSYS git build still needs some work IMO.
If your team are comfortable with or prefer the command line, then either bazaar or mercurial would probably work well for you, and are both probably about the same in terms of learning curve. Git's learning curve is much higher. It is like the swiss-army knife that is almost wider than it is long, with all the little gadgets and do-dads in it and hanging off it, with the springs so tight that you occasionally slice a finger open trying to prise a blade out.
In my experience using GIT on windows is a major pain. But I have been using Fossil SCM for some time now, and I think it actually fits your needs exactly.
It also has a built in Ticket system and a Wiki. And the whole program is contained in 1 file and it works right out of the box.
I totally recommend it.
Here is a link to the site http://www.fossil-scm.org/
Remember, this site is self hosting, what that means is you are looking at the web interface to fossil it self, when you look at tickets and the wiki and documentation, you actually are using fossil.
But if your project has millions of lines of code and is a few gigabytes in size, you have to use GIT, there is no way around that problem.
Enjoy.
Related
Myself, I'd be perfectly happy with Git or Mercurial, but I'm tying to identify a version control system which all our Windows admins could use for sharing script code, meeting the following requirements:
distributed, i.e. we want a central repository where users can clone or fork from
GUI on Windows (bonus points for Explorer integration like the TortoiseCVS forks)
Windows-friendly installation (e.g. msysgit's OpenSSH or PuTTY configuration disqualifies it)
easy to understand, i.e. the end users probably do not know or use terms like trunk, branch, and tag, and ideally would never need to
integrates with popular text/code editors like Notepad++ (this is not a must-have, but would be a real plus)
Maybe I'm asking too much, but there must be some usable VCS out there to fit the bill!
Some thinking
I can't see any strong reasons in your use-case for DVCS (i.e. reasons for cloning-merging instead of personal "shelves")
Friendly installation: for admins (even Windows-admins must have brain and easy understand "OpenSSH or PuTTY configuration")?
Ideas
You can see at Smart* products from Syntevo (Full-size GUI, not pure shell-extensions /but have shell-extension also/). Beware - Java! SmartGit have human-brain-friendly config, early versions also have support for Mercurial
For editors with SCM-integration I can suggest EditPlus (not free, but reasonable good price) - support from a box for basic Subversion commands (in a main menu), latest build have added support for TortoiseGit. But - with the help of UserTools virtually any (CLI?) command can be added to EditPlus interface and executed in EditPlus editor-window
I'm not aware of any non-IDE editors on windows other than maybe Emacs and UltraEdit that have version control support. Otherwise, Mercurial really does fill the bill. It's distributed, it has TortoiseHg, it has several options for windows installers (including admin and non-admin installs), and at least when using TortoiseHg, it's relatively easy to understand.
No VCS in the world is going to completely insulate users from its own concepts, but if you don't use branches and tags, the issue isn't going to come up (personally I'd recommend at least learning about tags -- they're easier to work with than raw rev spec hashes). Were you to find some other VCS that isn't one of these mainstream choices, I'd be interested in knowing about it, but chances are you'd also find it was one or more of a) expensive, b) has a vanishingly small community, and c) no sites like sourceforge, google code, or bitbucket to host your projects.
Now for one major alternative: If your users are primarily editing documents, then possibly you want a CMS of some sort, for which you have options ranging from the likes of Drupal, Joomla, and Magnolia, to something simpler like a Wiki. MediaWiki with some syntax hilighting plugins might be just the thing for single-file scripts. This is a centralized solution without any real editor integration however, so I'm not sure it's the workflow you're looking for. There are some wikis based on DVCS's (mostly git) but I find they tend to be the worst of both worlds.
I'm looking for an alternative version control software to TortoiseSVN/ Subversion. Only interested in those with a GUI and an easy installation process, though if multiple installations are needed (Such as vault, which needs both a client, server, and lots of other stuff), please give some installation instructions with your answer.
I'm a one man shop as of right now.
Use Mercurial and TortoiseHg.
Just as matter of interest why is it that you dont want to use subversion?
If you dont want to look after the subversion server and repos, you can always put them in places like assembla, or similar(i only used them and pretty happy wit the service and the value) , that for a small fee will look after all that and the integration with trac, etc.
And the integration tools with most IDEs are pretty good.
Other option is git, tho integration with windows is not great and this is something that you seem to be very interested in.
(I m not afiliated with assembla, just a happy customer so far)
I'd be interested in why you don't like SVN, but some alternatives that I have some experienve with and are free (atleast for one man shops):
CVS
Vault
Perforce
I like Perforce when in an environment with a lot of users (but then it starts costing serious money), but for my personal (one man) stuff, I use SVN - it's much easier to administer.
I second Bazaar -- I've recently been part of converting two teams to using it and it's been quite easy. (Think of it being like git, but able to work in the same way you're used to doing with svn, plus able to work on Windows.) Two people in my office are using TortiseBZR on Windows with good success. It's easy to set up a server too -- I had it done in less than 30 minutes and able to work with others. (The easiest/quickest way to do a server is over SFTP, but you can do it all on your machine too, if you'd like.)
I use GIT on windows with TortoiseGIT and i'm loving it! .
Git Extenions looks like a better way of using Git in Windows than the alternatives. It even comes with a Visual Studio plugin.
VisualSVN integrates directly into Visual Studio if you are working on the .net Framework. The developers of Stack Overflow used it!
PS: Its not free
I use Visual SourceSafe with Visual Studio. Every time I work on a project for a while, the directory structure on my harddisk gets messed up.
The latest versions of the files are going to their own nested folder, so I end up with C:\VS2005\Projects\MyProject\MyProject\MyProject\MyProject
What is causing this?
I can't help with your particular problem, but I remember my own pains using SourceSafe just a few years ago.
If you have a choice on the source control system you use, I'd recommend taking a look at other options. There are several good ones to choose from.
I switched to SVN and never looked back. It is light-years better than SourceSafe and setup only takes a few minutes if you use visualsvn server (a free product). As for Visual Studio integration, visualsvn client is about $50, or just use ANKH + Tortoise (both are open source and very good). Bottom line is that the switch doesn't have to cost any money, and the installer packages are quick to get the system running on both the clients and the server.
Hope that helps, and good luck with SourceSafe if you have to keep using it.
Update: See also, this thread
You're going to need to get an old priest and a young priest... or a better version control system.
What is causing this?
Just the general contra-expectation insanity which is VSS and VS combined I'm afraid. You could spend the time to really get to know VSS and how it thinks of things and how to avoid the quirks and pitfalls, but the thing is such an outdated beast I'd second Robert's asssertion that it's more profitable to get yourself a copy of SVN and VisualSVN and never worry about this again.
I can not help but be in agreement with the other gentlemen, run away from VSS as fast as you can. If you have not been bitten by it already, you will. Any tool will be better, be it Subversion, Mercurial or others. The fist two have extensions named Tortoise{SVN,HG} that will enable you to play with a user-friendly interface if you don't like CLI tools. My own choice is HG (also known as Mercurial) as it is a decentralized/distributed VCS which enable offline work/commits and easier distributed work.
I'm looking for a tool like Atlassian's FishEye. The alternatives I've found so far (like StatCVS, ViewCVS or Bonsai) are either lacking in features or are quite a pain to install and maintain. So before staying with one of these tools, I'd like to be sure I did not miss any other good, easy to install, open-source (prefereably java) version control-viewer which supports cvs as scm.
Another SVN tool which has repository browsing capabilities is Trac. This is nice because as well as a browser for the repository it also has a timeline showing commits. It also does bug tracking.
Warehouse is pretty cool
ViewVC is a good open source, web based, repository viewer similar to FishEye. I know you've looked at it, and you're right, it was a hassle to set up, but once setup, it's run without any intervention for almost three years for us.
There is also CVS Monitor, though it hasn't got the nearly the number of features as FishEye.
We use ViewCVS for repository browsing.
If you were using SVN I'd highly recommend Tortoise SVN.
Our dev shop currently uses Visual SourceSafe. We all know how that could end up (badly), so we're investigating other systems. First up is Perforce. Does anyone have experience with using it and its integration into Visual Studio (2003/2005/2008)? Is it as good as any other, or is it pretty solid with good features, comparatively?
I used Perforce at my last 3 jobs (my current job I'm using Subversion, which I don't like nearly as much.) I'm a big fan of Perforce, and moving from SourceSafe it will seem like Nirvana. Just getting atomic checkin will be a big boost for your company. Otherwise, Perforce is fast, it has good tools, and the workflow is simple for doing things like merges and integrations. I wholeheartedly recommend it. It may not be all new and flashy like the latest distributed VCS's, but honestly, I prefer the client/server model for its speed, especially if you're working with people in other countries that may have slow connections to you.
The Visual Studio integration is pretty good, but it has a few irritating issues. If you run another Perforce client at the same time (like P4V), it's very poor at keeping changes from the other client in sync in terms of showing what files are currently checked in/out. You generally have to shut down Visual Studio and load the project again if you want it to sync correctly. But, the sync status doesn't actually affect checkins/checkouts/updates from working correctly, it just means you can be fooled in to thinking something is in a different state than it actually is while you're in Visual Studio. The Perforce clients will always show the correct status as they sync continually with the database.
Also, on occasion you'll find you need to work "offline" (not connected to the Perforce database for some reason) and when you load the project again the next time, your Perforce bindings may be lost and you'll have to rebind each project individually. If you work with a solution that contains many projects this can be a big pain in the patoot. Same goes for when you first check out a solution, binding to Perforce is needed before the integration occurs.
It's difficult to call $900 per user a good feature.
We used Perforce for well over a year before switching to SVN recently. While I did like the tools (for example, visual diff and merge and the admin bits), we had some really tiresome issues with binding, as Chris mentions; otherwise, the VS integration is satisfactory. If anything, I find working with SVN easier and more intuitive than Perforce. TortoiseSVN (the Windows Explorer shell extension) is great, and we bought a couple of VisualSVN licenses for VS integration. Contrary to Perforce, VisualSVN does not work with the MS SCC interface, but rather directly with the SVN client, which I personally see as an advantage. Perforce does have support for many other OSes, but our non-Windows devs feel more comfortable with SVN too. If I were to have to choose again, I'd stick with SVN.
Sourcegear Vault is the best SCM for migrating VSS users to.
And its cheap.
Perforce works fine with Visual Studio, including "offline" mode where VS will make your local files writable and sync with the server later.
I tend to use the Perforce GUI for many operations (submits, diffs) just because it's quicker/better, but the process of the IDE checking things out is seamless.
Perforce in my experience is rock-solid and the best mixed (code+data) version control product out their if cost is not a factor.
My biggest gripe is that the performance of the server under Windows is no where near as good as under *nix, and if you are using a *nix server they do not officially support the option for case-insensitive filenames (meaning you either forgo support relating to filesystem errors, or setup a trigger that prevents people adding foo.cpp if Foo.cpp exists).
My other main compaint is that for some common operations you have to revert to the command line, often piping functions together. One example would be getting a list of files in a directory that are not under source-control.
Both of these are issues that reflect more on the company than the product though. IMO Perforce know they're at the top of the market and thus see no reason to invest in fixing things like this.
I have experience using a Perforce derivative.
It seemed hard to manage from the admin's perspective, but it was fine to use from a programmer's perspective.
Then again, I'm big on command line version control so can't speak for VS integration.
I've used personally and managed a number of teams for a few years who have been doing Perforce & Visual Studio. It works perfectly well. There can be a couple of binding/rebinding gotchas, but these are generally easy to sort out - Perforce knowledgebase and/or the mailing list is a good source of info.
Never had any problems with using command line, visual clients, and VS IDe simultaneously - refresh normally works fine.
We use perforce extensively in the company, including branching for very large projects, development on Sun Solaris and Windows, and more than 120 users.
It is very fast, and the Windows GUI (P4V) is very nice. The Explorer integration is acceptable. I've disabled the VS integration, and use macros (calling e.g. p4 edit) to edit/revert/diff files. The VS integration is extremely annoying for large projects (our solution has >130 projects), but may work for smaller projects.
I haven't used Perforce, but I have found moving to Team Foundation Server as one of the best options while working with Visual Studio.