Mark Shuttleworth on renaming and merging

October 7th, 2007

Mark Shuttleworth (of Thawte, Ubuntu, and Canonical fames) wrote four posts on rename tracking feature in version control systems, and its impact on merging as a social process.

Read at his blog:

Those posts caught a lot of attention back in June, but frankly it seems to me the issue is somewhat overrated (but nevertheless a recommended reading). Mark’s Canonical Ltd. supports the development of Bazaar. Bazaar has the discussed feature of merging with renames tracking. Git does not have it, but it has another argument in this discussion: huge merging traffic — Linux kernel development is all about merging, and the codebase is huge. So, I guess this feature is not that crucial: Linus is well-known by his uncompromising approach to tools.

Ian Clatworthy: “The Future Is Adaptive”

October 6th, 2007

Ian Clatworthy, one of the primary developers of Bazaar, has posted a series of articles on version control in broad modern context.

His primary thesis is:

Beyond market acceptance, there are 6 main criteria I consider when evaluating collaboration tools:

  1. Reliability
  2. Adaptability
  3. Usability
  4. Extensibility
  5. Integration
  6. Administration (including Total Cost of Ownership)

Read the whole series at:

Couple of memorable quotes:

Likewise, in the field of collaboration, I think there are 5 interesting numbers: 1, 2, 10, 100 and 1000. These numbers represent:

  • an Individual
  • a Partnership
  • a Team
  • a Company
  • a Community

[…]

As a young software engineer back in the early 90s, 10s of thousands of people woke up to cold showers in Sydney one morning because of a corner-case bug in my code controlling the off peak hot water system. That sort of event tends to have a life long impact on how one designs software!

auto_migrations plugin for Rails

October 4th, 2007

PJ Hyett has created an impressive plugin for Ruby on Rails, called auto_migrations.

It deduces changes between the db/schema.rb and the current database schema, and executes the appropriate commands to bring the latter in sync with the former. It supports creating tables, adding, changing, and removing fields, adding and removing indexes. It also allows you to create the real migrations based on schema changes.

Read more at author’s blog: Err the Blog: “Automatically”.

Git 1.5.3

September 14th, 2007
Git 1.5.3 was released by Junio Hamano on Sep 3rd. Read more at: git stash is similar to shelving feature of Microsoft Team Foundation Server.

Garry Dolley: “Capistrano 2.0 with Git shared repository”

September 14th, 2007

Garry Dolley posted the module for Capistrano (that’s Ruby on Rails deployment tool) which allows it to use Git as the source control system.

Read more and download at “Capistrano 2.0 with Git shared repository”.

Zack Rusin: Git cheat sheet

September 12th, 2007

Zack Rusin created useful Git cheat sheet.

See “Git cheat sheet” for several sizes.

There is also a similar Mercurial cheat sheet at http://www.ivy.fr/mercurial/ref/v1.0/

Thank you, Robert.

Linus Torvalds: Re: clarification on git, central repositories and commit access lists

August 27th, 2007

Linus Torvalds, in a long excellent e-mail reply to KDE developer Adam Treat, writes about social and technical issues of decentralized version control systems, as applied to huge software projects like Linux and KDE.

Read at LWN.net: “Re: clarification on git, central repositories and commit access lists”.

C. Michael Pilato: “Subversion Locking”

August 15th, 2007

C. Michael (Mike) Pilato, one of the main developers of Subversion, answers common questions about Subversion file locking feature.

The default version control model employed by Subversion is the copy-modify-merge model, where users asynchronously checkout personal working copies of a versioned directory, modify files inside that directory, and then commit their modifications, only worrying about conflicting changes made to the same file when they actually occur. Locking (sometimes referred to as “reserved checkouts”) allows Subversion users to step outside that default model and into the lock-modify-unlock model, in which multiple users preemptively serialize their commit access to a given file so that conflicts never occur.

Mike discusses pros and cons of file locking in context of Subversion; the exact mechanism for file locking (via svn:needs-lock property); and existing restrictions (only files could be locked, and not directories or branches).

Read at Subversion blog: From the Question Bin: Subversion Locking.

Google Diff, Match, and Patch libraries for plain text

August 15th, 2007

Google Code hosts a library written by Neil Fraser, called google-diff-match-patch.

The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text.
  • Diff: Compare two blocks of plain text and efficiently return a list of differences.
  • Match: Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location.
  • Patch: Apply a list of patches onto plain text. Use best-effort to apply patch even when the underlying text doesn’t match.

Currently available in Java, JavaScript and Python. Regardless of language, each library features the same API and the same functionality.

Google Documents uses this library. Reasonable content management systems should use it, too.

More information and download at Google Code: diff-match-patch.

(via Global Moxie: “And speaking of version control…”)

Upgrading Drupal with Git

August 2nd, 2007

Drupal development team has released Drupal 5.2 on July 26, 2007. It fixes two security vulnerabilities, so it is highly recommended that you upgrade as soon as possible. Many Drupal installations often contain extra Drupal modules, and almost always the also contain local customizations.

Question arises: how to upgrade your Drupal installations

  • timely,
  • safely,
  • with confidence that none of your local customizations are lost;
  • without need to remember each line that was edited and re-applying those edits to new version;
  • without need to drastically change your workflow (very little discipline is needed actually);

We show that Git solves those problems easily. Read the rest of this entry »