[development] howto about git and drupal modules maintain
kathleen at ceardach.com
Wed Jul 30 15:40:13 UTC 2008
SVN vs Git
Centralized vs Decentralized
SVN (and CVS) is based on having a centralized repository while Git is
decentralized. In SVN, committing, checking out, merging, etc, all
need to check into the central (remote) repository. Git's
decentralized nature means that all commits, reversions, checkouts,
merges, etc, all happen locally. You literally have an entire copy of
the repository, entire history and all, and you manually sync up to
the central source being used by your team (this is both good and bad
depending on your situation). You can do more work without an
internet connection than you can with SVN.
Since you have to manually sync with the "source control hub" with
git, there are extra tools added to be able to manipulate your commits
before syncing/pushing out to the hub/public. You can combine commits
and rearrange their order to have a clean patch history of each
change. The manual syncing also promotes smaller commits because you
don't have to worry about breaking someone else's working copy between
your commits. A large change can be pushed out instantaneously to
your team in a batch of numerous commits. This promotes and
encourages people to commit often, helping developers even with their
SVN's speed is limited to your network connection. With Git entirely
localized, your speed is only limited by your local environment.
Internet only comes into the equation when you push your changes to
the hub. A merge involving a large amount of files is lightning fast
when compared to SVN (I've had checkouts/merges/etc take 20+ minutes).
Setting up a repo in Git is also very fast. Since it's decentralized,
there is no need for the overhead of creating the centralized location
for storage like SVN/CVS. Just "git init" and "git add ." and you're
ready to go.
Git is designed for the ease of branching and merging. It's goal is
that you can maintain multiple branches and merge them with ease. It
promotes and encourages the developer to branch because it's so easy.
SVN uses incremental revisions for the entire repository, trunk,
branches, tags and all. Git uses just hashes to identify a unique
commit. It thinks more along the lines of "how many commits from
HEAD" rather than specific commits.
Git has an extra spot between a modified file and a committed change
called "staging". This can make it easier to develop, to maintain
that "inbetween" spot and not lose your changes. If you've ever
copied a file even when working with SVN or CVS, then you'll find
staging commits valuable.
On Wed, Jul 30, 2008 at 10:39 AM, Jerad Bitner <sirkitree at gmail.com> wrote:
> This looks really good, and may just give me the excuse I've been looking
> for to get into GIT, as CVS is somewhat of a pain IMO... but what I have yet
> to see is someone explain the pros and cons.
> GIT still looks to me like it's just a bunch more commands to try to
> memorize. Does anyone have some resources that clearly outline why anyone
> would want to use GIT over CVS or even SVN?
> On Wed, Jul 30, 2008 at 12:57 AM, Gordon Heydon <gordon at heydon.com.au>
>> This looks really cool.
>> I do all the e-Commerce development in git and esp when working with many
>> branches it is so easy to keep it all in line with different versions.
>> Fixing a bug in 1 very can very easily be copied to another branch, and I
>> find that they will convert 80% of the time with no manual effort.
>> However I don't like the CVS integration as much as I like the SVN
>> integration. The SVN integration work much more like just another git
>> repository and once you have made all the changes you can pass in all the
>> commits at once. it is quite cool.
>> On 30/07/2008, at 1:25 PM, Marco Antonio Villegas Vega wrote:
>>> Hello all,
>>> I posted a little how to about maintaining drupal modules using git:
>>> I'm sending this email because I see high activity on git related mails.
>>> Hope this helps,
>>> Marco Antonio Villegas Vega
>>> ( __ - __ ) Ing. Informatica
More information about the development