How does SVN handle Changesets, if at all?

mattengland
mattengland
Does Subversion support atomically committed and fully transactional Changesets?    The "comparison" ( http://better-scm.berlios.de/comparison/comparison.html#changesets ) says about Subversion Changeset support:    
Subversion: Partial support. There are implicit changeset that are generated on each commit.
   What does this mean, and how does this work? (As you can tell, I'm still learning the CVS/Subversion usage paradigm; I've been a longtime build-scripts-on-top-of-SCCS/RCS development manager, and then later Perforce and Visual Source Safe (ugh).)    The above statement (from the comparison document at belios.de) is giving me pause, and I'm now considering GNU arch (or any other non-CVS, open-source CM management) instead, even if my first application of a CM system will probably be to manage sets of documents (and not necessarily source code for software applications).    Not also that I'm specifically seeking atomically committed and fully transactional Changesets.    Thanks for any help with my analysis!  -Matt      Background/Definition    I'm sure I'm preaching to the choir here on the nature of Changesets, but just in case there's any confusion:    [A "Changeset" explanation/definition that I found, in case there's dissention on its definition: http://blogs.msdn.com/korbyp/archive/2004/07/15/184442.aspx ]    From http://www.gnu.org/software/gnu-arch/tutorial/introduction.html#Introducing_arch :    
Changeset Oriented arch doesn't simply "snapshot" your project trees. Instead, arch associates each revision with a particular changeset: a description of exactly what has changed. arch provides changeset oriented commands to help you review changesets, merge trees by applying changesets, examine the history of a tree by asking what changesets have been applied to it, and so forth.

Last updated

mkc
mkc
Each commit is atomic and transactional. Either an entire commit goes through or none at all. Each rev number applies to an entire repository. That is checking out revision 15 will pull down exactly how the repository looked when it was checked in. This is in contrast to CVS where each file has an individial revision number and you need to do tricks to pull down the entire repository as it looked at a point in time.    SVN does not support everything Arch does, but in general that is not a bad thing IMO. If all you need are atomic and transactional commits, SVN gives you that. It works very well for source code projects. It is a step up from CVS whereas arch is a whole different approuch to the problem.    My advice to you would be to check out svn for a week or so and see if there is anything you need that it cannot do.
mattengland
mattengland
mkcEach commit is atomic and transactional. Either an entire commit goes through or none at all. Each rev number applies to an entire repository. That is checking out revision 15 will pull down exactly how the repository looked when it was checked in. This is in contrast to CVS where each file has an individual revision number and you need to do tricks to pull down the entire repository as it looked at a point in time.
   Ok. However, I'm still confused on how the definitions "repositories," "revisions," and "Changesets" all relate?    Specifically: can I submit a set of changes across many files oriented to a single task as a documented and "grouped" control? (Again, seem my defs of Changesets above.)    
SVN does not support everything Arch does, but in general that is not a bad thing IMO. If all you need are atomic and transactional commits, SVN gives you that.
   The "atomic and transactional commits" feature by itself is just one small piece to a much larger puzzle. See above for some more pieces...but certainly not all of them. ;)    
 My advice to you would be to check out svn for a week or so and see if there is anything you need that it cannot do.
   Yeah, I'm just trying to make sure I'm evaluating the right things. Seems like I need to put arch and SVN under the microscope together. Like you say, they may approach the problem differently...and/or solve different problems.    Subversion-vs-arch references would be helpful...and/or any other references to open-source CM tools. (Do CVS/SVN/arch comprise the whole lot? I'll probably make a separate topic on this.)    -Matt
Troublegum
Troublegum
mattenglandSpecifically: can I submit a set of changes across many files oriented to a single task as a documented and "grouped" control? (Again, seem my defs of Changesets above.)
   Yes. A commit or revision is basically a changeset. It includes all changes made in a commit.  btw: "svn diff -rY:X" gives you the changes in revision X as unified diff.
watchman
watchman
Aloha!    (Sorry for jumping in this late).    I have been using Perforce for a while. In many ways a great revision control tool. And fast.    P4 supports changesets. And one thing I liked is that the P4 when committing allows me to specify which of the files in the repo that has been modified should go into the changeset. That is, I might have modified 10 files, but for a specific commit 6 files should only be committed since the commit is relevant only for these files.    In P4 you specify this in the commit message file that you submit with the files.    Now, as far as I have used SVN, all files with changes are implicitly included in the changeset. But is there a good way to specify this to SVN?
mkc
mkc
Unfortunately this is not really possible. What shows up in "svn st" for the directory you're in is what is going to get sent in that commit/changeset.    Welcome to the forum watchman.

1-6 of 6

Reply to this discussion

You cannot edit posts or make replies: You should be logged in before you can post.