On Apr 22, 2016, at 5:07 PM, Richard Hipp <d...@sqlite.org> wrote:

> 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!)
> 


Right well I’m just trying to figure out a way to automate thing so the dev 
never has to worry about copy and pasting any kind of ticket or checkin numbers 
from one place to another.  I want it to just happen automatically through 
wrapper scripts and workflow control.  

This is also a bit confusing to me about the implication of many commits 
corresponding to a single ticket.  I will play around with it some more until I 
grok it a little more.  Perhaps I just need to learn which is the right web 
screen to look at… 

Ideally, as a gatekeeper, having to look through a list of commits when 
reviewing the changes for a ticket…its difficult.  What’s better is to see a 
list of files being effected in the ticket (across all the commits it has) and 
the macro diff for each of those files..for the whole ticket..not just one 
commit at a time.   So that is easy in the git world if the dev is told to 
squash their commits before a pull request.  In Fossil we can’t squash, but we 
need to make it easy for the gatekeeper to see a squashed view of the requested 
changes for the ticket across multiple commits.  Also in the future it would be 
good to tag the final commit of the ticket…so that anyone trying to look at 
stuff later will be able to see the interim commits are half-fixes for the 
ticket.  The full ticket is only represented by the range of version 
nodes..with the last one being the one that matters the most..  


> 
> 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.
> 


In the past on other systems I’ve used like clear case, we always did work on 
another branch and the merge did squash the commits arriving on the dest branch 
in the process.  Im not sure if you’re saying a merge here would merge multiple 
commits from one branch into a single commit on the dest branch?  You said it 
preserves the history, but that would infer that the merge would not squash the 
commits in the process.  



> 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.
> 


Ah…I will try this out..  I didn’t know you could click between two nodes and 
see the diff.  I will try that…that might provide enough.  Even more ideally 
I’d like to write a wrapper script that will figure out the diff and present 
diff or gdiff to the gatekeeper.  Gatekeeper would see a list of files changing 
between the two more extreme nodes of the ticket…show the list of files and one 
at a time the diff.  I guess this is doable with scripting...



>> 
>> 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.
> — 


I hear you.  Just for the record I’m not a fan of git.  I only mentioned it 
earlier for context.  Most of my experience in the past has been as a dev using 
clear case, and highly scripted work flow to enforce things so that mistakes 
like that simply would not happen.  for me that is preferable.  

The totally open ended approach of git (and perhaps fossil?) to allow people to 
just push and pull code all over everywhere and use their best judgement on 
merging stuff…there is some usefulness for that in the open source world of 
throwing code around a lot and trying lots of stuff, etc.   But I also see that 
as branch merging kaos I would rather avoid.  It has proven to be very popular 
our open source world with people able to toss code around in many different 
versions very easily..and perhaps so.

In a situation where you want a little tighter control over the mainline..then 
I prefer a more rigid process that prevents that from happening to begin with.  
So if I were going to do anything with git, I would be trying to think of 
wrapper scripts and such to enforce similar constraints as to what we used to 
do back in the clear case days.

Having the ability to squash commits or not…I hear you about wanting all the 
history always, that’s all fine and good, so long as tags or something similar 
is used to mark the important version nodes, so interim commits can be 
basically ignored later on.  

I think it should be attainable with fossil as well, its just a matter of using 
the write branching/tagging strategy and some clever scripts.


_______________________________________________
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