[Box Backup] Future development plan

Martin Ebourne boxbackup@fluffy.co.uk
Thu, 18 Aug 2005 20:09:40 +0100


On Thu, 2005-08-18 at 18:13 +0100, Ben Summers wrote:
> Would anyone really object if Perforce is used? The branch and merge  
> functionality looks rather neat.

I don't run closed source software on any of my machines, so I
personally wouldn't use it.

As to whether it's really a better solution I've never used Perforce so
can't help. But I've read some of the manual and a few comparison pages
and would offer the following.

Perforce is faster than subversion, but then Box Backup is a small
project, and I know from experience that it runs at an acceptable speed
in subversion.

Perforce does merge tracking which subversion doesn't do yet. But
reading the manual, merging from the command line doesn't seem any
easier than subversion, it just saves you looking up revision numbers
from the log. Maybe with the graphical tool it is easier, I didn't
check.

The actual conflict resolution (the bit of merging that can take time)
looks almost exactly the same in perforce as in subversion.

Perforce doesn't work as well as subversion in disconnected operation -
likes to connect to the server for more functions than subversion does,
including marking a file as editable.

Perforce communicates over a port using its own protocol. Therefore it
is not usable in locations where you do not have control over the
firewall, whereas subversion over webdav works in all situations
including through a http proxy (you can even look at code directly in a
web browser).

As to merging in subversion, it's one of the easiest of the version
control systems I've used. Just as an example, here's an actual
transcript grepped from my command line history. It looks like a lot of
commands, but then I did quite a lot. I made a branch to hold my
submissions, selectively merged a bunch of changesets from two branches
into it and then fetched those out as patches. I even split one of the
changesets out into two, for good measure. Examples in manuals are never
this complicated. :-)

These submissions were my last 4 patches to box:

svn cp vendor branches/submit
svn ci -m "Branched branches/submit from vendor"

svn merge -r 9:11 trunk branches/submit
svn merge -r 14:15 trunk branches/submit
svn revert branches/submit/boxbackup/lib/raidfile/RaidFileWrite.cpp
svn ci -m "Merged r10, r11, r15 from trunk to submit, excluding the workaround for RaidFileWrite.cpp from r15."

svn merge -r 14:15 trunk branches/submit
svn ci -m "Merged the workaround for RaidFileWrite.cpp from r15 on trunk to submit."

svn merge -r 4:9 trunk branches/submit
svn merge -r 11:14 trunk branches/submit
svn merge -r 15:16 trunk branches/submit
svn ci -m "Merged r4:9, r11:14, r16 from trunk into submit."

svn merge -r 17:49 branches/autoconf branches/submit
svn ci -m "Merged r17:49 from autoconf into submit."

svn diff -r 53:54 > ~/stuff/box/competition/1-ppc-fixes.patch
svn diff -r 54:55 > ~/stuff/box/competition/2-ppc-workaround.patch
svn diff -r 55:56 > ~/stuff/box/competition/3-xattr.patch
svn diff -r 56:57 > ~/stuff/box/competition/4-autoconf.patch

Cheers,

Martin.