I’m going to start two different reply forks: I’ll reply to the Pollack article 
here, then send another message later to chime in on your proposal, drh.

On Mar 2, 2015, at 5:30 AM, Richard Hipp <d...@sqlite.org> wrote:
> 
> Ben Pollack's essay at
> http://bitquabit.com/post/unorthodocs-abandon-your-dvcs-and-return-to-sanity/
> succinctly points up some of the problems with DVCS versus centralized
> VCS (like subversion).

Thanks for the pointer.  It sums up most of my problems with the Git and GitHub 
models.  It’s too bad Pollack doesn’t include Fossil in his comparison.

I don’t think all of his points apply to Fossil:

1. “Sanely track renames.”  In this respect, I think Fossil offers one step 
forward, one back relative to Subversion.

While Fossil does seem to realize that a rename isn’t the same thing as 
add+delete *most* of the time — I have managed to confuse it a few times into 
seeing a rename as add+delete — it doesn’t backtrace through a rename in finfo 
output:

  f new x.fossil
  mkdir x
  cd x
  f open ../x.fossil
  touch a
  f add a
  f ci -m ‘initial'
  f mv a b
  mv a b
  f ci -m ‘renamed a to b’
  f finfo b
  2015-03-03 [bc09e28048] .. (user: warren, artifact: [da39a3ee5e], branch:
           trunk)

Point being, I usually end up having to go into “fossil ui” to trace the 
ancestry of a file back through a rename.  Doubtless it is possible to do this 
from the command line somehow, but I miss the behavior of “svn log” which did 
the backtrace for you.


2. Explosion of manuals and tutorials.

To some extent, the relative paucity of Fossil training material is a 
consequence of its…ummm… unpopularity?  But, it is also the case that it 
doesn’t *need* as much training material.

I read the Red Bean Book, and I still don’t quite understand how svn branching 
and merging is supposed to work in practice.  We ended up ignoring about half 
of the mechanics proposed therein, which made our conversion to Fossil more 
difficult, but it worked at the time for us.

With Fossil, though, I’m branching and merging for the first time without 
difficulty.  The hardest part was getting past the scar tissue laid down by 
svn.  “It’s that simple, really?  No way, can’t be.  There’s got to be more to 
it than that!”

Partly this is due to the ability to create a branch as part of a checkin with 
"f ci --branch”.  Partly it is due to the branch structure being made visible 
in f ui.  These are genuine advances over Subversion, and I thank you for them, 
drh.


3. “fossil bundle” makes Fossil nearly as easy to use as Subversion for 
drive-by patches.  I believe the equivalent Fossil sequence is:

a. Clone the master repo
b. Open a copy of the repo
c. Make your change
d. Check it in on a branch; ignore the auto-sync complaint
e. Bundle the new branch
f. Send the bundle to the project maintainer
g. Watch it get ignored

So, just two more steps than svn, rather than 4, as with git.

One of the two extra steps is due to the fact that clone is separate from open 
in Fossil, which I consider a feature.  It allows multiple opens on a local 
clone.  

I absolutely hate the Git alternative where you have to keep switching the 
local checkout/repo to see different branches.  The checkout operation itself 
is time consuming, then it eats more time due to the forced rebuilds, since it 
must rebuild the objects to match the changed sources.  With Fossil, I can keep 
not only multiple source checkouts from a single repo clone, but also multiple 
build trees.

The other extra step is the apparent necessity to check your changes in.  This 
is also a feature since it’s how Fossil records the checkin comment, the user 
info, etc.  If the project maintainer accepts the bundle without changes, this 
step saves him work that he’d otherwise have to do manually in the patch(1) 
case.

If someone wants to tie “fossil bundle” into the ticketing system, we can save 
a step here by bypassing the email step.  (fossil bundle submit?)

Perhaps we could save the other step by offering a clone-and-open mode, perhaps 
by storing the Fossil repo file inside the opened tree?  I propose “fossil 
hack,” so named because it would be used by people who just want to do a quick 
hack on your repo, not seriously spend a lot of time with it.
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to