Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Eric
On Sun, 30 Dec 2012 01:24:44 -0600, Mike Meyer m...@mired.org wrote:
 
 Nico Williams n...@cryptonector.com wrote:
snip
 Other things that can be redone in a rebase would include:
 
 From what you've said, I believe that it's these *other things*
 that you want: an easy way to munge commits as they get copied to a
 new branch. I don' think that's an unreasonable request, as opposed
 to wanting rebase. After all, we can do that now with repeated
 cherry-picking merges. But without a more detailed description than
 I want rebase, it's hard to tell if that's the case or not, propose
 alternatives, and otherwise engage in the process of refinement that
 peer review is supposed to provide.

So perhaps all we need is a streamlined way to do multiple
cherry-picks (which may even end up with a similar feel to git
rebase --interactive).

Whatever we do we can't call it rebase, because people will then assume
that it is just like git rebase, and it won't be because it must
not manipulate the pre-existing tree. If you don't believe that the
name matters, just read the why does `fossil rm' not do the real
thing? thread.

Now for a few more general comments (30 messages overnight!!):

Because upstream wants it is not necessarily a good reason. Upstream
can be just as misguided as downstream. Also they should not be making
requests that are difficult in their VCS of choice, and likely workflows
should have been part of the process of choosing a VCS.

That commits should do only one thing is a sensible idea (whether the
one thing is a one line bug fix or a major feature implementation), but
this is about project policy, and developers should work in such a way
as to be able to achieve it. You can do it in Fossil, and if something
you have to do to achieve it takes too long, then write, design,
or ask for functionality to streamline it (in that order of preference!).

One of the things that people seems to miss is that if you are working on
several things in parallel (say a nearly finished feature, a feature
in early exploration, and a few bugs some of which are on different
branches) you should really be doing each in a separate working directory
based on the same repository. This is easy in Fossil, and is possible
in git (or even CVS!). You will of course have to do various merges,
but everything will be fairly clean, and you won't even need stash!

Upstream will always have to do some merges!

Someone on every project should have a clear idea of how branches can
and should be used, and write a branching policy. Being sensible about
branches and merges covers many of the apparent problems.

And finally, if you want something that Fossil can't do at all, even
in a round-about or tedious way, you need to be able to express it in
terms of development needs, not just as I want 'somevcs mangle'.

Eric
-- 
ms fnd in a lbry
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Nico Williams
On Sun, Dec 30, 2012 at 7:58 AM, Eric e...@deptj.eu wrote:
 On Sun, 30 Dec 2012 01:24:44 -0600, Mike Meyer m...@mired.org wrote:

 Nico Williams n...@cryptonector.com wrote:
 snip
 Other things that can be redone in a rebase would include:

 From what you've said, I believe that it's these *other things*
 that you want: an easy way to munge commits as they get copied to a
 new branch. I don' think that's an unreasonable request, as opposed
 to wanting rebase. After all, we can do that now with repeated
 cherry-picking merges. But without a more detailed description than
 I want rebase, it's hard to tell if that's the case or not, propose
 alternatives, and otherwise engage in the process of refinement that
 peer review is supposed to provide.

 So perhaps all we need is a streamlined way to do multiple
 cherry-picks (which may even end up with a similar feel to git
 rebase --interactive).

That's the essense of rebase.  Glad we agree.

 Whatever we do we can't call it rebase, because people will then assume
 that it is just like git rebase, and it won't be because it must
 not manipulate the pre-existing tree. If you don't believe that the

I repeat: git rebase does not manipulate the pre-existing tree, it
does not destroy any history already in the tree.  The only
destructive action that git rebase does is change the commit that a
branch _name_ points to, and from a fossil philosophy perspective this
is the only aspect of git rebase that is worth differing on.

 name matters, just read the why does `fossil rm' not do the real
 thing? thread.

Gratuitous terminology differences only burden users.  Calling this
something else will only placate the anti-git police.

 Now for a few more general comments (30 messages overnight!!):

Depressing, I know.

 Because upstream wants it is not necessarily a good reason. Upstream
 can be just as misguided as downstream. Also they should not be making
 requests that are difficult in their VCS of choice, and likely workflows
 should have been part of the process of choosing a VCS.

Sometimes you don't get to argue with upstream.  It's either their way
or the highway.  But I've also explained in much detail why upstream
actually *is* justified in asking for contributions to be nicely
organized as a linear sequence of properly ordered commits that
applies cleanly to the upstream trunk and where each commit stands
alone, etcetera.

As for making requests that are difficult in the VCS of their
choice... I agree entirely.  And that is why Fossil (as it is) cannot
be considered for the large projects I've worked with.

 That commits should do only one thing is a sensible idea (whether the
 one thing is a one line bug fix or a major feature implementation), but
 this is about project policy, and developers should work in such a way
 as to be able to achieve it. You can do it in Fossil, and if something
 you have to do to achieve it takes too long, then write, design,
 or ask for functionality to streamline it (in that order of preference!).

Agreed.  I should show up with code in hand.  I just did that for a
different open source community (LyX), and I wish I could do it for
this one.  But I'm out of time for the next six months.

What if I had intended response to that 3-paragraph initial post to
help me gauge interest levels in a possible contribution of fossil
rebase functionality?  Why should I spend valuable time and effort on
a contribution that will be rejected?  The contribution I made to
lyx-devel last week was one I weighed carefully through an earlier
discussion on lyx-users.

Your (that's general your) hospitality, or lack thereof, matters.
This goes for me too: obviously I've allowed frustration to show, and
this is bad since it only heightens hostility, and for this I'm sorry.

 One of the things that people seems to miss is that if you are working on
 several things in parallel (say a nearly finished feature, a feature
 in early exploration, and a few bugs some of which are on different
 branches) you should really be doing each in a separate working directory
 based on the same repository. This is easy in Fossil, and is possible
 in git (or even CVS!). You will of course have to do various merges,
 but everything will be fairly clean, and you won't even need stash!

I never git stash -- it's a git feature I've yet to internalize (and
you all thought I was a git zealot! ha).  I generally commit
everything, even work in progress, then switch to another branch, then
back, and eventually I rebase to squash the work-in-progress commits
if need be.

 Upstream will always have to do some merges!

The upstreams I've worked with only ever accept merge-free
(fast-forward, in git terms) commits.  Occasionally one has such a
large project to contribute that it's difficult to ensure that no
other commits will slip in while one is updating the project to the
trunk, in which case the upstream should lock the upstream so that
no commits can be pushed until the project's 

Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Michael Richter

 If I had written a ten-page post explaining in excruciating detail
 what rebase is, why it matters, and how to adapt it to the Fossil
 philosophy, who -but who!- would have read that first post?


I, for one, would have.  I wouldn't necessarily have agreed, mind, because
the disagreement may be philosophical, not technical, but I appreciate
people putting in actual explanatory effort over it's too much work.


 I was
 being (I thought!) considerate.  And judging by last night's 30 posts,
 would it have made any difference to post a thesis-length argument for
 rebase?  And if so, how was I to know that?  Or should I have given up
 at the very first sign of trouble?



I'm still baffled, frankly, as to why you don't just use the DSCM that does
what you want now instead of tilting at windmills with the one that doesn't
do what you want.

The Erlang community faces this kind of problem on an almost monthly
basis.  I really like Erlang, it invariably starts, but I don't like
immutable variables, and I want module-level mutable state, and I'd like to
be able to overload default function implementations with customized ones,
and I'd like a more imperative syntax, and…

In the end what they *really* want is Ruby (or Python (or C++ (or …))) with
one added feature from Erlang: easy concurrency.  They don't understand
that the features of Erlang were set up the way they are for a specific
purpose, and a purpose that gets undermined when you remove those
features.  The easy concurrency is the *least* important of the
architectural decisions that went into Erlang, it's just the most visible
of them.  (Erlang isn't intended as a language for easily writing
concurrent systems.  It's intended as a language for easily writing *
reliable* systems.  The fabled nine-nines.)

You want rebase (or equivalent) because you want a clean history.  I
appreciate Fossil *because* of the messy (where for me *s/messy/honest/*)
history.  Because that messy history is a warning.  It's a flag saying
something went wrong here that shows possibly complicated code issues or
problems in work flow or even problems with a developer's habits.  If
understanding why something got that way is a problem, we enter with
another concept that's sadly all too lacking in software: we
*document*it.  We explain it.  We don't just brush it under the carpet
and pretend it
didn't happen.

-- 
Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese
people. It's not been about our revenue or profit or whatnot.
--Sergey Brin, demonstrating the emptiness of the don't be evil mantra.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Michael Richter
I'd just like to add a link to a Git user who *doesn't* like rebasing:
http://paul.stadig.name/2010/12/thou-shalt-not-lie-git-rebase-ammend.html


On 31 December 2012 07:26, Michael Richter ttmrich...@gmail.com wrote:

 If I had written a ten-page post explaining in excruciating detail
 what rebase is, why it matters, and how to adapt it to the Fossil
 philosophy, who -but who!- would have read that first post?


 I, for one, would have.  I wouldn't necessarily have agreed, mind, because
 the disagreement may be philosophical, not technical, but I appreciate
 people putting in actual explanatory effort over it's too much work.


 I was
 being (I thought!) considerate.  And judging by last night's 30 posts,
 would it have made any difference to post a thesis-length argument for
 rebase?  And if so, how was I to know that?  Or should I have given up
 at the very first sign of trouble?



 I'm still baffled, frankly, as to why you don't just use the DSCM that
 does what you want now instead of tilting at windmills with the one that
 doesn't do what you want.

 The Erlang community faces this kind of problem on an almost monthly
 basis.  I really like Erlang, it invariably starts, but I don't like
 immutable variables, and I want module-level mutable state, and I'd like to
 be able to overload default function implementations with customized ones,
 and I'd like a more imperative syntax, and…

 In the end what they *really* want is Ruby (or Python (or C++ (or …)))
 with one added feature from Erlang: easy concurrency.  They don't
 understand that the features of Erlang were set up the way they are for a
 specific purpose, and a purpose that gets undermined when you remove those
 features.  The easy concurrency is the *least* important of the
 architectural decisions that went into Erlang, it's just the most visible
 of them.  (Erlang isn't intended as a language for easily writing
 concurrent systems.  It's intended as a language for easily writing *
 reliable* systems.  The fabled nine-nines.)

 You want rebase (or equivalent) because you want a clean history.  I
 appreciate Fossil *because* of the messy (where for me *s/messy/honest/*)
 history.  Because that messy history is a warning.  It's a flag saying
 something went wrong here that shows possibly complicated code issues or
 problems in work flow or even problems with a developer's habits.  If
 understanding why something got that way is a problem, we enter with
 another concept that's sadly all too lacking in software: we *document*it.  
 We explain it.  We don't just brush it under the carpet and pretend it
 didn't happen.


 --
 Perhaps people don't believe this, but throughout all of the discussions
 of entering China our focus has really been what's best for the Chinese
 people. It's not been about our revenue or profit or whatnot.
 --Sergey Brin, demonstrating the emptiness of the don't be evil mantra.




-- 
Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese
people. It's not been about our revenue or profit or whatnot.
--Sergey Brin, demonstrating the emptiness of the don't be evil mantra.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Steve Havelka
On 12/30/2012 03:26 PM, Michael Richter wrote:

 If I had written a ten-page post explaining in excruciating detail
 what rebase is, why it matters, and how to adapt it to the Fossil
 philosophy, who -but who!- would have read that first post?  


 I, for one, would have.  I wouldn't necessarily have agreed, mind,
 because the disagreement may be philosophical, not technical, but I
 appreciate people putting in actual explanatory effort over it's too
 much work.
  

 I was
 being (I thought!) considerate.  And judging by last night's 30 posts,
 would it have made any difference to post a thesis-length argument for
 rebase?  And if so, how was I to know that?  Or should I have given up
 at the very first sign of trouble?



 I'm still baffled, frankly, as to why you don't just use the DSCM that
 does what you want now instead of tilting at windmills with the one
 that doesn't do what you want.

 The Erlang community faces this kind of problem on an almost monthly
 basis.  I really like Erlang, it invariably starts, but I don't
 like immutable variables, and I want module-level mutable state, and
 I'd like to be able to overload default function implementations with
 customized ones, and I'd like a more imperative syntax, and...

 In the end what they *really* want is Ruby (or Python (or C++ (or
 ...))) with one added feature from Erlang: easy concurrency.  They
 don't understand that the features of Erlang were set up the way they
 are for a specific purpose, and a purpose that gets undermined when
 you remove those features.  The easy concurrency is the *least*
 important of the architectural decisions that went into Erlang, it's
 just the most visible of them.  (Erlang isn't intended as a language
 for easily writing concurrent systems.  It's intended as a language
 for easily writing *reliable* systems.  The fabled nine-nines.)

 You want rebase (or equivalent) because you want a clean history.  I
 appreciate Fossil *because* of the messy (where for me
 /s/messy/honest//) history.  Because that messy history is a warning. 
 It's a flag saying something went wrong here that shows possibly
 complicated code issues or problems in work flow or even problems with
 a developer's habits.  If understanding why something got that way is
 a problem, we enter with another concept that's sadly all too lacking
 in software: we *document* it.  We explain it.  We don't just brush it
 under the carpet and pretend it didn't happen.


Except in the case where that messiness occurs in a private branch, and
isn't ever pushed back to the central repository.  Then the messiness is
concealed.

It sounds like Nico wants a better UI for managing private branches than
a not-in-Fossil's-philosophy history-rewriting mechanism.  Especially
since, for a few days now, he's been talking about not rewriting
history, but doing the rebase-like operations by always making new
branches, and not interfering with the existing ones.

If I've got this much right, what would that kind of UI look like?






 -- 
 Perhaps people don't believe this, but throughout all of the
 discussions of entering China our focus has really been what's best
 for the Chinese people. It's not been about our revenue or profit or
 whatnot.
 --Sergey Brin, demonstrating the emptiness of the don't be evil mantra.


 ___
 fossil-users mailing list
 fossil-users@lists.fossil-scm.org
 http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Joerg Sonnenberger
On Sun, Dec 30, 2012 at 02:05:38PM -0600, Nico Williams wrote:
 I repeat: git rebase does not manipulate the pre-existing tree, it
 does not destroy any history already in the tree.  The only
 destructive action that git rebase does is change the commit that a
 branch _name_ points to, and from a fossil philosophy perspective this
 is the only aspect of git rebase that is worth differing on.

git rebase is destructive due to a combination of not supporting more
than one leave revision for a given named tag and dropping all other
revisions on a non-fastforward push. Now a combination of recording what
a rebase is based on and just marking the original commit as closed
would pretty much serve the purpose of fossil.

Joerg
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Fossil vs. Git/Mercurial/etc.?

2012-12-30 Thread Mike Meyer


Nico Williams n...@cryptonector.com wrote:
Go back through those 30 posts you mentioned.  Go back to the very
first one from me.  I tried to be concise and wrote just three
paragraphs that, IMO, captured what was needed.  I certainly did not
say I want git rebase in fossil and then watched the fireworks --
no, I explained *concisely* (or at least that was my aim).

No, you said I want something slightly different than git rebase in fossil. 
Concise? Yes. Precise? No. Well-defined? No. Useful? No.

If I had written a ten-page post explaining in excruciating detail
what rebase is, why it matters, and how to adapt it to the Fossil
philosophy, who -but who!- would have read that first post?  I was
being (I thought!) considerate.  And judging by last night's 30 posts,
would it have made any difference to post a thesis-length argument for
rebase?  And if so, how was I to know that?  Or should I have given up
at the very first sign of trouble?

That depends on the goal. If you want to troll the list, then arguing for 
rebase is a good choice. If you want fossil to incorporate a solution for your 
problem, you should provide the information people are asking for. Given how 
poorly your attempt to work with the comunity has gone, giving up now isn't an 
unreasonable option. On the other hand, if you want to be able to use fossil, 
and are willing to work with us to solve your problem instead of arguing about 
what rebase does, you can start by answering our questions.

For instance, you haven't answered any of my questions. You've explained in 
detail what rebase does, but that's irrelevant, because rebase is only an 
approximation to what you want, and you haven't explained how what you want is 
different in sufficient detail for us to figure out what that is. You haven't 
shown us why the existing solutions are to much work. You haven't said what 
kind of interface you want (otherr than interactive rebase, and you haven't 
said what that interface looks like!). You  may think you have, but your 
opinion here doesn't matter: if we don't have a clear understanding of what you 
want, we don't have it, and the onus is on you to provide it. The best way to 
do that is by answering our questions.

rebase is just a name. Forget it. Quit trying to convince us that rebase is 
compatible with fossil. Show us that *what you want* is compatible with fossil. 
Of course, that has to start with a *precise* description of what you want, in 
fossil terms, not in git terms. Give us an *example*. Simplify it as much as 
you can, but leave in all the features you want. Show us how you'd do it with 
fossil now. Show us the commands you would like to have (and call them TBD or 
some such), and how we would use them. 
-- 
Sent from my Android tablet with K-9 Mail. Please excuse my swyping.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


[fossil-users] fossil sqlite3

2012-12-30 Thread Michael Richter
Is there any way to execute SQL statements from the command line using
fossil sqlite3?  The docs for
thishttp://www.fossil-scm.org/xfer/help?cmd=sqlite3are a bit skimpy
(to say the least).  Like what are the
*?OPTIONS?* mentioned, precisely?

What I'm specifically trying to accomplish is to extract the project ID
from the repository in a script file.  If there's another way to do this
I'm happy to use that instead, of course.

-- 
Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese
people. It's not been about our revenue or profit or whatnot.
--Sergey Brin, demonstrating the emptiness of the don't be evil mantra.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] fossil sqlite3

2012-12-30 Thread Edward Berner

On 12/30/2012 10:43 PM, Michael Richter wrote:
Is there any way to execute SQL statements from the command line using 
fossil sqlite3? The docs for this 
http://www.fossil-scm.org/xfer/help?cmd=sqlite3 are a bit skimpy (to 
say the least).  Like what are the /?OPTIONS?/ mentioned, precisely?


What I'm specifically trying to accomplish is to extract the project 
ID from the repository in a script file.  If there's another way to do 
this I'm happy to use that instead, of course.



I think fossil info will get what you're looking for.  eg:

$ ../fossil info -R ~/fossil/test.fossil
project-name: unnamed
project-code: 07660919180b651835b3a51776a58007ca9fb6f9

fossil info calls it project-code but it seems to be the same thing 
that fossil new and fossil clone call project-id.


--
Edward

___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users