|
Advantages of each system are listed below. Add more if we left any out. Google Code- Revision control
- More peope are familiar with SVN.
- SVN is free.
CodePlex- Revision control
- TFS support is built into Visual Studio Team System, so dropping to the command-line for add, delete, rename is no longer necessary.
- For those without VSTS, several free TFS clients are available, including command-line ones.
- CodePlex also offers SVN server emulation so you can even keep using SVN clients.
- Easier patches: Shelvesets would allow easier submission and review of patches
- Issue tracking, release management
- Issues and releases are more closely tied together, and for any given release people can easily review all the issues that have been fixed (or not) for that release.
- A dedicated page for each release, rather than Google Code's simple file link for downloads with no room for comments.
- Misc
- RSS feeds for everything that can change: sources, wiki, issues, discussions, releases.
- Better web visitor statistics
- Not that we have to give up the dotnetopenid mailing list, but there's a forum-style Discussions tab on the project pages that is nicer to navigate than the Google Groups web site for those not on the mailing list.
- It's "the" place to host .NET projects (although this is admittedly an inconsequential thing, really)
- There is facility for structured wiki pages, but some of the things we use Google Code's wiki for can be done better with the dedicates areas for those things on the project site at CodePlex.
Git- Revision control
- Git is free and is supported on Windows and Linux.
- Great support for branches, tags. (superior to SVN)
- Everyone can commit into their own repositories on their hard drive, and these commits can be pulled/pushed into the central repository when ready.
- Everyone has a complete repository on their drive (it's smaller than an SVN working copy!)
- Has built-in patch integration support. SVN relies on the Linux patch program, which isn't part of Windows.
- Automatic following of moved/renamed files. Just rename files and folders and Git will find them and the proper history in your commit. Compare this with SVN or TFS which has to personally do the move/renaming for the history to follow the file.
- Cut-and-pasted lines from one file to another keep their history across files!
- More forgiving on bad commits. You create a commit or several, modify them if you've made a mistake, and when you're confident in them you can then push them up to the central repository.
- Commit while offline! You don't need to be on the Internet to commit your changes. Sure, you can't push your commit to the public repository until you're online, but you can finish a change, commit, and work on another change all offline. SVN and TFS require you to be online to proceed from one set of changes to the next.
- Doesn't lose fidelity of individual commits when merging across branches.
- Any developer can have any number of branches in his personal Git repository without affecting the rest of the contributors.
- Freedom to switch between branches at will without having to either checkout the whole tree of branches and tags or having to be online to switch branches.
- Bisect feature that allows automated discovery of when bugs were introduced.
- Misc
- Downside: No hosting providers integrate Git repos with issue tracking, so we'd wan to pair up Git use with CodePlex, Google Code, or some other project hosting site.
|