Does Subversion have Changesets?
The question is a bit loaded, because everyone seems to have a slightly different definition of “changeset”, or a least a slightly different expectation of what it means for a version control system to have “changeset features”. For the purposes of this discussion, here’s a simple definition of changeset: it’s a collection of changes with a unique name. The changes might include textual edits to file contents, modifications to tree structure, or tweaks to metadata. In more common speak, a changeset is just a patch with a name you can refer to. Subversion manages versioned trees as first order objects (the repository is an array of trees), and the changesets are things that are derived (by comparing adjacent trees.) Systems like Arch or Bitkeeper are built the other way around: they’re designed to manage changesets as first order objects (the repository is a bag of patches), and trees are derived by composing sets of patches together. Neither philosophy is better in absolute terms: the