Archive for August, 2007

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

Monday, 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”

Wednesday, 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

Wednesday, 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

Thursday, 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.

(more…)