Posted
1 day
ago
by
nob...@example.com (Ben Collins-Sussman)
As I’ve mentioned in other posts, the Subversion project is on the verge
of releasing version 1.5, a culmination of nearly two years of work. The
release is jam-packed with some huge new features, but the one everyone’s
excited about
... [More]
is “merge tracking”.
Merge-tracking is when your version control system keeps track of how
lines of development (branches) diverge and re-form together.
Historically, open source tools such as CVS and Subversion haven’t done
this at all; they’ve relied on “advanced” users carefully examining
history and typing arcane commands with just the right arguments.
Branching and merging is possible, but it sure ain’t easy. Of course,
distributed version control systems have now started to remove the fear
and paranoia around branching and merging—they’re actually designed
around merging as a core competency. While Subversion 1.5 doesn’t make it
merging as easy as a system like Git or Mercurial, it certainly solves
common points of pain. As a famous quote goes, “it makes easy things
easy, and hard things possible.” Subversion is now beginning to match
features in larger, commercial tools such as Clearcase and Perforce.
My collaborators and I are gearing up to release a 2nd Edition of the
free online Subversion book soon (and you should be able to buy it from
O’Reilly in hardcopy this summer.) If you want gritty details about how
merging works, you can glance over Chapter 4 right now, but I thought a
“nutshell” summary would make a great short blog post, just to show
people how easy the common case now is.
1. Make a branch for your experimental work:
$ svn cp trunkURL branchURL
$ svn switch branchURL
2. Work on the branch for a while:
# ...edit files
$ svn commit
# ...edit files
$ svn commit
3. Sync your branch with the trunk, so it doesn’t fall behind:
$ svn merge trunkURL
--- Merging r3452 through r3580 into '.':
U button.c
U integer.c
...
$ svn commit
4. Repeat the prior two steps until you’re done coding.
5. Merge your branch back into the trunk:
$ svn switch trunkURL
$ svn merge --reintegrate branchURL
--- Merging differences between repository URLs into '.':
U button.c
U integer.c
...
$ svn commit
6. Go have a beer, and live in fear of feature branches no more.
Notice how I never had to type a single revision number in my example:
Subversion 1.5 knows when the branch was created, which changes need to
be synced from branch to trunk, and which changes need to be merged back
into the trunk when I’m done. It’s all magic now. This is how it should
have been in the first place. :-)
Subversion 1.5 isn’t officially released yet, but we’re looking for
people to test one of our final release candidate source tarballs.
CollabNet has also created some nice binary packages for testing, as part
of their early adopter program. Try it out and report any bugs! [Less]
Posted
1 day
ago
by
nob...@example.com (steveking)
We've created the second release candidate of the upcoming 1.5.0 release.
We like to have as many people as possible to give this release candidate
a test and report back any bugs you find.
Note:
read more
Posted
5 days
ago
by
nob...@example.com (Mark Phippard)
Earlier this week, the Subversion community issued an RC5 release with
the latest round of fixes. As we have done with previous releases,
CollabNet is providing binaries for Windows, Linux, OSX and Solaris. The
CollabNet Merge client and
... [More]
Subclipse have both been updated as well.
Here is a list of some of the noteworthy fixes I see (in order they were
backported):
* r30741
Fix bug whereby 'svn status --depth=files' still showed some dirs.
* r30743, r30751
Fix memory leak in recursive remote propget.
* r30776, r30777, r30779
svndumpfilter drops mergeinfo when it is *not* run with
--renumber-revs.
* r30666, r30684, r30726
Fix for issue 3181. Compare repository UUID with working copy when
opening RA session
* r30761, r30762
Fix for issue 3172. 'log -g' fails the moment it encounters a bogus
mergeinfo which claims a merge from a non-existentpath@REV1-REV2.
* r30820
Fix pool issue which definitely can lead to assertion failures in
reintegrate, and quite possibly to other mergeinfo corruption.
* r30868, r30871
In svnserve, tolerate unreadable passwd files. Don't error over
svn ssh:// when the user can't read passwd.
* r30843
Fix abort in ra_serf when server sends invalid xml during replay.
* r30907
Fix for issue 3185. Fix the 'log --limit' compatability code in
ra_svn, ra_serf, and ra_neon to ignore nested logs when in '-g' mode.
* r30883, r30888
Fix issue 3187. Fix reverse merges where merge target or subtree has
non-inheritable revision ranges intersecting with the merged range.
* r30931
Remove 'blind deletion of argument to mkdir --parents', delete only
if this invocation has created it.
* r30896, r30905
Make Cyrus SASL client support DIGEST-MD5.
* r30986
Fix potential segfault in svn_io_remove_dir2(path='.').
* r29191, r29398, r29833, r30663, r30963, r30964
Improve the responsiveness and accuracy of 'svn log -g'. [Less]
Posted
5 days
ago
by
Mark Phippard
Posted
7 days
ago
by
nob...@example.com (Ben Collins-Sussman)
Remember that awesome folding travel banjo I bought a year ago? It was
really cool, but I traded it away for something better.
My original itch was the fact that I was flying to California (and other
places) at least five times per
... [More]
year, and wanted to be able to join in
jams in other cities. It’s really nervewracking to carry a banjo on a
plane — usually the attendants will let you store it in the coat-hanging
closet, but you live in constant fear of being forced to “gate check” the
thing into the bottom of the plane. And that means burly men throwing the
thing around. You can fill your hardshell case with bubble wrap all you
want, but there are still a lot of horror stories out there. So the
Tranjo was perfect: the neck just popped off (with strings still
attached!), and the whole thing fit in a backpack. I went through airport
security five times last year before anyone even noticed I had a banjo in
my bag — it only got searched on the 6th flight. Great peace of mind!
Unfortunately, the Tranjo had one big drawback: it was too quiet. I’d
take it to jams and couldn’t even hear myself playing. The instrument was
great for practicing quietly in hotel rooms, or playing solo around a
campfire (which I did once)… but that’s it. No group jamming. So, I
stopped carrying it with me on trips, and discovered it was easier to
just ask friends to lend me banjos on the other side. Turns out there are
several Googlers in Mountain View who have banjos I can borrow. :-)
Thus, I decided to trade in my Tranjo for a really nice “traditional”
open-back banjo. It’s a beautiful, light-weight thing, with a rock maple
rim and mahogany neck. It sounds great, and is perfect for old-time
“clawhammer” frailing. (Clawhammer is a whole different school of
banjo-playing that doesn’t involve picks at all—the music pre-dates
bluegrass by centuries, long before the bluegrass-heads added resonators
to make banjos louder.) The banjo is made by a single artisan in
Michigan, Bart Reiter. So now I have my big-ass resonator banjo for
bluegrass jams, and my smaller (less expensive) open-back banjo for
camping, car trips, and practicing at my office. It’s a joy to play!
(Pictures below are taken from Turtle Hill Banjo’s website.)
[IMAGE]
[IMAGE] [Less]