On 4/22/16, Steve Schow <st...@bstage.com> wrote:
>
> 1 - I notice tickets numbers are not automatically cross linked with
> commits.

Links are automatic if you include the ticket number [nnnnnn]
somewhere in the check-in
comment.  See the check-in at
https://www.sqlite.org/src/timeline?c=ab9d279f40f81e5a for a recent
example.  Notice how that check-in includes the ticket number in the
check-in comment, and the ticket number gets crossed out automatically
when the ticket is closed.

If you click on the link to the ticket number, it takes you straight
to the ticket.  Then on the ticket page, you can click on "Timeline"
in the submenu bar to see
https://www.sqlite.org/src/tkttimeline/7d7525cb01b68 all check-ins
associated with that ticket.

I suppose the ticket timeline could be cleaned up a little to give it
all the same features as the regular timeline.  I just seldom use the
ticket timeline so it hasn't gotten as much attention.  (An
opportunity for you to contribute!)

>
> 2 - I notice fossil doesn’t endorse or seem to directly support the
> squashing of commits.

Right.  The Fossil philosophy is different from Git.  In Fossil, we
work hard to preserve *all* history.  You can correct thing (change
the date or user or comment of a check-in or more a check-in to a
different branch) but as in accounting, the original information is
preserved as an audit trail.

One pithy way of saying this is that Git tries to show what you should
have done while Fossil tries to show what you actually did.

The equivalent to squashing commits is to do the work on a branch,
then merge the branch when it is done.  The merge take the place of
the squash, but preserves the history.

If you want see a sequence of changes as a single diff, bring up a
timeline that shows all the changes, click on the "node" of the
origin, then click on the last check-in, then it will show you a diff
between those two nodes.

>
> 3 - whether to use auto-sync or not.  I would like to enforce a work flow
> where devs are not able to move any changes back to the mainline until it
> passes code review.

The Fossil idea is that it provides mechanism, not policy.  Policy
issues such as "do not merge to trunk until approved" are enforced
administratively.  If is an accidental commit to trunk occurs, that
commit can be moved back out into another branch when the mistake is
discovered.  If other commits have occurred on top of it, use the
--backout option to back out the changes with yet another commit.

https://www.sqlite.org/src/timeline?c=f632bba0 is an example of doing
a commit incorrectly, then moving it off into a separate branch after
the mistake is discovered.  I originally (mistakenly) did the check-in
on trunk.  Then as a separate step I moved it into a branch, continued
working on the feature, then eventually merged it back to trunk when
it was ready.

As project coordinator, I have been known to move other peoples
branches off of trunk, when they check in things that I do not approve
of.  I try to keep that to a minimum, but the capability is there when
you need it.

https://www.sqlite.org/src/timeline?c=8f1f300c is an example of a
check-in that was done against the wrong baseline, so it was moved
into a new branch called "mistake".  The corrected check-in ended up
at https://www.sqlite.org/src/timeline?c=ea4de04d

The point is that Fossil preserves *all* the history, even the
mistakes.  That is different from Git, which only tries to keep the
important stuff.  Which approach is better depends on what you are
trying to do.  Again:  Git tries to show what you should have done,
while Fossil tries to show what you actually did.
-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
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