I’ve never used version control before, but I’m starting to work more collaboratively on WordPress plugins and themes and I think it would be a good idea to have a record of versions and updates.
WordPress seems to favour SVN, but Git seems to be the new, cooler alternative.
Which version control do you use currently? And which system would you choose today if you were starting out in WP theme and plugin dev?
I use Git for all my projects since it lets me work offline and that happens fairly often for me. Git can interface with SVN if you’d still like to use Git then push your plugins to WordPress.org.
For local dev I use tortiose-svn , it is really easy, there is no learning curve, it takes about 10 minutes to learn and get up and running.
If your looking for online or multi-collaboration I would look into Git, especially if your using a Git friendly editor like vim.
Here is a huge list of interfaces and editors that work with Git, scoll down to 2.1
** updating this answer since it is showing in search, I no longer use tortoise-svn and have replaced it with mercurial and tortoise-hg and I don’t see a reason I would ever go back, git or mercurial (or any other decentralized repo system is way better).
I use a blend of Mercurial and SVN. I use Mercurial because I can maintain a local repository in addition a network repository that I can use to sync my multiple development machines and push updates to other developers in the community. Google Code allows you to host open-source Mercurial and SVN repositories for free … a great resource.
But SVN is the flavor of choice when working with WordPress plug-ins and themes that you want hosted in the official WordPress.org repository. There are ways to interface Mercurial directly with SVN, but I don’t necessarily want to push all of my changesets to repository. So I develop locally, committing to my local repo. Then I push at the end of the day/week/whatever to the Google Code repo. Then, when I’m ready for a new version release, I export the project and dump it into the SVN repo on WordPress.org.
This allows me to keep my work separate from contributors’ work separate from what is actually released as “finished” to the community.
If you’re on Windows, I highly recommend a GUI tool for using both systems. Tortoise SVN is fantastic, and Tortoise Hg is a great port of the same for Mercurial. I use both.
I experimented with Git for a while, but personally I prefer GUI tools and I couldn’t find one that I liked that would fit in my development routine. GitGUI was OK, but a bit clunkier than the Tortoise tools I mentioned above. And there are too many outstanding bugs and issues with Tortoise Git for me to feel comfortable depending on it for version control.
Mercurial – without no alternatives.
I use both Subversion (SVN) and Mercurial (Hg). The former for some of my older projects, and the latter for newer ones. I do understand the advantages of using a distributed system, but a lot of them don’t apply to me. So I’m torn over whether to port my projects to Hg repos. There’s no pain at the moment, so I’m leaving well enough alone.
Across all the various open source projects out there, a variety of VCSs are used, so some familiarity with the big ones may be useful. Otherwise, for your personal projects, just pick one.
If I were starting out again, I would probably use Hg and avoid SVN.
I use RTC ( http://jazz.net ) and yes 3.0 is out since this week! (Free for up to 10 users)
read: http://jazz.net/forums/viewtopic.php?t=4383
If you’re just “starting to work more collaboratively on WordPress plugins and themes” then the tool you use will likely be determined by whomever you are collaborating with.
It’s not at all accurate to say that “WordPress seems to favour SVN”. WordPress has used SVN for a long time. There hasn’t been a compelling enough reason (yet) to change a system that works well. Which is to say SVN works, and Git does to… Some core devs do prefer Git though and use git-svn rather than using SVN directly (which I’m just starting to do and figure out myself).
Personally given the choice and starting a new project, I’d use Git nearly without exception, not because it’s better, but because it fits how I work.