Re: Version control tools

2014-01-08 Thread David Kastrup
Joseph Rushton Wakeling  writes:

> On 08/01/14 21:13, David Kastrup wrote:
>
>> At the current point of time, due to a discussion about version
>> control on the Emacs developer list, I am working on git blame which
>> is ridiculously slow.  For the file src/xdisp.c, it takes about 2
>> minutes on my computer.  I've cut it down by some 20 or 30% on the
>> first attempt, but with my current approach, I should eventually get
>> it down to few seconds at most.  At the current point of time, it
>> segfaults almost instantaneously.  One out of two ain't bad...
>>
>> Ridiculous that this code has not been sensibly improved over the last
>> 10 years or so...
>
> It's a surprise to me, certainly.  What do you think of the Facebook
> developers' contention that Git's internals would be difficult to work
> with if serious scaling gains are desired?

Well, I'll answer like Gandhi when asked "Mr Gandhi, what do you think
of Western civilization?": "I'd consider it a good idea.".

I've taken a look at some of the difference machine internals (that's
basically git's workhorse) and found out that optimizations I did in
2006 or so have not been superseded.  Now it's hard to get those much
faster but it was still sort of a surprise that the core stayed pretty
much the same.  It's mostly the callers who get some polish, and
options, and utf-8 message re-/encoding and such things.

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Joseph Rushton Wakeling

On 07/01/14 14:51, Urs Liska wrote:

I don't think it would be advisable to encourage any _new_ user to learn SVN or
CVS (if it isn't for a specific project of interest), but for your use case this
is surely a valid question.


One way in which svn can still be useful is in cases where you want the code but 
don't care about having a local copy of the version history.  Example: recently 
I needed the latest gcc trunk source.  Cloning via git-svn or bzr-svn proved 
extraordinarily slow and painful simply because the history was so large; taking 
a svn checkout was much quicker and easier, and (obviously) also used far less 
disk space; and it was completely adequate to purpose, because all I wanted was 
the ability to keep the code up to date, not to commit to it myself.


I do wonder if this is one of the reason why some projects keep svn as the main 
VCS, using git or other DVCS mirrors for those who want to use them.



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Joseph Rushton Wakeling

On 08/01/14 21:13, David Kastrup wrote:

Actually, that seems like a mischaracterization to me.  It's the single
file logs which aren't cheaper than the multi-file logs.


You could be right.  In any case, the Facebook devs are claiming wins for all 
change-related commands, including status, diff, update and commit:

https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/


At the current point of time, due to a discussion about version control
on the Emacs developer list, I am working on git blame which is
ridiculously slow.  For the file src/xdisp.c, it takes about 2 minutes
on my computer.  I've cut it down by some 20 or 30% on the first
attempt, but with my current approach, I should eventually get it down
to few seconds at most.  At the current point of time, it segfaults
almost instantaneously.  One out of two ain't bad...

Ridiculous that this code has not been sensibly improved over the last
10 years or so...


It's a surprise to me, certainly.  What do you think of the Facebook developers' 
contention that Git's internals would be difficult to work with if serious 
scaling gains are desired?


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread David Kastrup
Joseph Rushton Wakeling  writes:

> On 08/01/14 19:40, Yann wrote:
>> With hg, each clone of a repository IS a complete repository itself. So your
>> "working copy" is a repository itself (the main folder just contains a hidden
>> .hg folder with all the history data). I feel this is an advantage over svn 
>> when
>> working locally, as your data and the history are at the same place.
>
> Exactly, as with git (which Lilypond uses) and bzr (a very nice tool
> as well, but now sadly somewhat neglected).
>
> If reddit is to be believed, it looks like hg has picked up a bunch of
> recent interest and investment from Facebook in order to optimize
> things like single-file diffs (which in git are no less expensive than
> whole-repo diffs).

Actually, that seems like a mischaracterization to me.  It's the single
file logs which aren't cheaper than the multi-file logs.

At the current point of time, due to a discussion about version control
on the Emacs developer list, I am working on git blame which is
ridiculously slow.  For the file src/xdisp.c, it takes about 2 minutes
on my computer.  I've cut it down by some 20 or 30% on the first
attempt, but with my current approach, I should eventually get it down
to few seconds at most.  At the current point of time, it segfaults
almost instantaneously.  One out of two ain't bad...

Ridiculous that this code has not been sensibly improved over the last
10 years or so...

-- 
David Kastrup

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Joseph Rushton Wakeling

On 08/01/14 19:40, Yann wrote:

With hg, each clone of a repository IS a complete repository itself. So your
"working copy" is a repository itself (the main folder just contains a hidden
.hg folder with all the history data). I feel this is an advantage over svn when
working locally, as your data and the history are at the same place.


Exactly, as with git (which Lilypond uses) and bzr (a very nice tool as well, 
but now sadly somewhat neglected).


If reddit is to be believed, it looks like hg has picked up a bunch of recent 
interest and investment from Facebook in order to optimize things like 
single-file diffs (which in git are no less expensive than whole-repo diffs). 
So for those interested in these tools, it might be worth giving it a try. 
Perhaps the DVCS landscape is not as settled as it has looked recently ...



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Yann
Hello :)

I used to work with svn some years ago (I learned it for programming at
first). I mostly then used GUIs with it (TortoiseSVN on windows and kdesvn
on linux).

Then I moved to Mercurial (hg) after comparing between different softwares.
One of the main reason I chose it over git was the availability of a good
GUI on windows
 (TortoiseHG works very well and is integrated both with windows explorer
and nautilus under linux/gnome). I also sometime use the command line
directly, but mostly for administration tasks or scripting.

I frequently use an addon to hg called mercurial-queues (mq) that allow to
work on a patch queue. So most of the time, I use patches to try some new
things (in scores also), or can switch between different queues depending
on which project I work on (each change on patches can be versionned in a
secondary repository).

When things get a little more stable, I commit changes to the main
repository, and I can push to a server if I'm working on a shared project
(I guess hg and git are quite similar in term of possible workflows).


To the question :
 > Simon Bailey:
> > so, my follow up question: why use git as a single user?

The main advantage I would see on using hg (but I think it is the same with
git) over svn, as a single user, is that :
in svn, you basically (if I'm not mistaken) need both the repository itself
(either local or distant) and a local checkout/working copy. If by any
chance by mistake you delete the repo folder, then all your history is lost
(er... yes, I did it once).

With hg, each clone of a repository IS a complete repository itself. So
your "working copy" is a repository itself (the main folder just contains a
hidden .hg folder with all the history data). I feel this is an advantage
over svn when working locally, as your data and the history are at the same
place.

Yann
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools (was: Survey: Git (G)UIs)

2014-01-08 Thread Henning Hraban Ramm

Am 2014-01-07 um 19:27 schrieb Urs Liska :

> As a follow-up question I'd be interested in whether people use other version 
> control systems beside Git. If you use more than one, a short comparison 
> would be of general interest I think.

Hi Urs,
I’m using everything that I need to fetch some project - I never needed 
something else than svn, git and hg (hm, there was that one project on bzr …), 
but personally only git. I guess hg is marginally better or simpler to learn, 
but I started with github and not bitbucket.

Greetlings, Hraban
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Noeck
Hi Simon,

I just listed the reasons why I use git in general. And I like having
one system for all version control use cases. You are right, the
advantages apply more to software than to scores.

> > - easy branching
> what for when working with scores?

Rarely in scores. But I use branches for the lily library for
includes/modules I use it for different feature branches, which I only
merge once they are done/usable.

> > - I am a heavy user of git rebase
> which does what?

It takes a branch, decouples it from its connection to the rest and puts
it on top of another given branch. That makes the history easier to
read. If you consider this situation, the master advanced (e.g. with a
ready feature) and now 'feature' is ready I could merge it. But I like
to put it after the master commits:

o--o--o--o--o--o master
  \
   '-o--o--o feature

git rebase master

   master
o--o--o--o--o--o--o--o--o feature


> > - being able to commit, branch, diff etc. without internet connection
> how often do you branch or diff when working on scores?

see above

> >   that way I can work on a train, for example
> 
> 
> hmm. i do a lot of work on trains. however, i have a data plan on my
> phone which i use for tethering if i need a connection.

I don't have.

For me the situation is this: I had the choice to learn svn or git and I
chose git for the beforementioned reasons. And I like to use one system
for all purposes.

But I see no point in converting others to git if they prefer svn and
like it.

Cheers,
Joram


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Urs Liska

Am 08.01.2014 11:24, schrieb Simon Bailey:

hi,

On Wed, Jan 8, 2014 at 10:20 AM, mailto:k...@aspodata.se>> wrote:

Joram:
 > Simon Bailey:
 > > so, my follow up question: why use git as a single user?
 >
 > I always use git, event git-svn for svn repos.
 > Comparing to CVS and SVN, I see these advantages:
 >
 > - easy branching


what for when working with scores?


Did you see 
http://lilypondblog.org/2014/01/why-use-version-control-for-engraving-scores/ 
?
There's a section about this specific question. The remaining sections 
are rather tool-agnostic and apply equally to SVM.
Bottom line is: You can use branches to keep master in a consistent 
state. You can work at different spots in parallel, keeping the whole 
consistent.




 > - I am a heavy user of git rebase


which does what?

 > - being able to commit, branch, diff etc. without internet connection


how often do you branch or diff when working on scores?

 >   that way I can work on a train, for example


hmm. i do a lot of work on trains. however, i have a data plan on my
phone which i use for tethering if i need a connection.

 > - this makes the commit often & early paradigm easy


i understand this when working on software programs. but on music scores?


It's exactly the same :-)
Why would you "commit often and early" in software development? mostly 
to have fine-grained control on the content of a commit and not to have 
a big blob of unrelated changes in a unit. That's exactly the same when 
you write scores.




With svn/cvs you need more-or-less a permanent connection to
"the server". With git I can work off-line and update (both ways)
when connected.


i only need the connection with SVN if i'm actually committing. with git
i can commit offline, but then when i get a data connection i have to
commit again to the repo? that's two steps compared to one with SVN. i
still don't get it. especially as i generally commit when i reach
certain milestones or at the end of a working day.


A Git commit isn't about integrating your work with the main line 
(remote repository) but about tailoring a coherent changeset. You may 
enclose your day's work in a commit but you can (as the other extreme) 
enclose a singly typo fix in a commit. With this you have finegrained 
control over your project history.
Each of these commits is a separate unit and step that can be inspected, 
reverted or modified individually later.
When you contact the server again you don't "commit" (in Git speech) but 
"push" your local commits to the server.

Obviously that's not what you're doing so far, so you don't miss it.
But I'm sure it is superior to be able to "tailor" the commit history 
locally instead of creating commits depending on the availability of an 
internet connection.




don't get me wrong, i'm really trying to find a reason to like git. but
nothing seems different to SVN so far, except for the fact that i have
to commit TWICE...

Urs also pointed out:
On Tue, Jan 7, 2014 at 2:51 PM, Urs Liska mailto:u...@openlilylib.org>> wrote:

Ah, finally one idea about your question, not based on experience
but on randomly read statements: How can you use branches with SVN?
If it's correct that Git branches are conceptually different through
being so exceptionally light-weight then I'd think this _is_ an
advantage even for a single user.


$ svn copy /trunk /branch/my-branch

from http://svnbook.red-bean.com/en/1.8/svn.branchmerge.using.html :
<<<
Subversion's repository has a special design. When you copy a directory,
you don't need to worry about the repository growing huge—Subversion
doesn't actually duplicate any data. Instead, it creates a new directory
entry that points to an existing tree. If you're an experienced Unix
user, you'll recognize this as the same concept behind a hard link. As
further changes are made to files and directories beneath the copied
directory, Subversion continues to employ this hard link concept where
it can. It duplicates data only when it is necessary to disambiguate
different versions of objects.
 >>>

sounds fairly lightweight to me too... ;) (this is also the same
workflow for tags).


Hm, don't know. As said, my comment was based on arbitrary reading.
Obviously (from skimming through that linked page) the branching concept 
between SVN and Git is _very_ different.
I can't really judge that, but as far as I've read this area is one of 
the major improvements of Git over the older VCSs.


Urs



regards,
sb
--
Do not meddle in the affairs of trombonists, for they are subtle and
quick to anger.


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user




--
Urs Liska
www.openlilylib.org

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Simon Bailey
On Wed, Jan 8, 2014 at 11:24 AM, Simon Bailey  wrote:

> don't get me wrong, i'm really trying to find a reason to like git. but
> nothing seems different to SVN so far, except for the fact that i have to
> commit TWICE...
>

just to clarify: i'm trying to find a reason for using git for my workflow.
in other scenarios (such as lily devel work or distributed software
development) i know there are benefits/differences and possibilities
compared to SVN/CVS or any other centralized source-code repo.

regards,
sb

-- 
Do not meddle in the affairs of trombonists, for they are subtle and quick
to anger.
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread Simon Bailey
hi,

On Wed, Jan 8, 2014 at 10:20 AM,  wrote:

> Joram:
> > Simon Bailey:
> > > so, my follow up question: why use git as a single user?
> >
> > I always use git, event git-svn for svn repos.
> > Comparing to CVS and SVN, I see these advantages:
> >
> > - easy branching
>

what for when working with scores?


> > - I am a heavy user of git rebase
>

which does what?


> > - being able to commit, branch, diff etc. without internet connection
>

how often do you branch or diff when working on scores?


> >   that way I can work on a train, for example
>

hmm. i do a lot of work on trains. however, i have a data plan on my phone
which i use for tethering if i need a connection.


> > - this makes the commit often & early paradigm easy
>

i understand this when working on software programs. but on music scores?

With svn/cvs you need more-or-less a permanent connection to
> "the server". With git I can work off-line and update (both ways)
> when connected.
>

i only need the connection with SVN if i'm actually committing. with git i
can commit offline, but then when i get a data connection i have to commit
again to the repo? that's two steps compared to one with SVN. i still don't
get it. especially as i generally commit when i reach certain milestones or
at the end of a working day.

don't get me wrong, i'm really trying to find a reason to like git. but
nothing seems different to SVN so far, except for the fact that i have to
commit TWICE...

Urs also pointed out:
On Tue, Jan 7, 2014 at 2:51 PM, Urs Liska  wrote:

> Ah, finally one idea about your question, not based on experience but on
> randomly read statements: How can you use branches with SVN? If it's
> correct that Git branches are conceptually different through being so
> exceptionally light-weight then I'd think this _is_ an advantage even for a
> single user.


$ svn copy /trunk /branch/my-branch

from http://svnbook.red-bean.com/en/1.8/svn.branchmerge.using.html :
<<<
Subversion's repository has a special design. When you copy a directory,
you don't need to worry about the repository growing huge—Subversion
doesn't actually duplicate any data. Instead, it creates a new directory
entry that points to an existing tree. If you're an experienced Unix user,
you'll recognize this as the same concept behind a hard link. As further
changes are made to files and directories beneath the copied directory,
Subversion continues to employ this hard link concept where it can. It
duplicates data only when it is necessary to disambiguate different
versions of objects.
>>>

sounds fairly lightweight to me too... ;) (this is also the same workflow
for tags).

regards,
sb
-- 
Do not meddle in the affairs of trombonists, for they are subtle and quick
to anger.
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-08 Thread karl
Joram:
> Simon Bailey:
> > so, my follow up question: why use git as a single user? 
> 
> I always use git, event git-svn for svn repos.
> Comparing to CVS and SVN, I see these advantages:
> 
> - easy branching
> - I am a heavy user of git rebase
> - being able to commit, branch, diff etc. without internet connection
>   that way I can work on a train, for example
> - this makes the commit often & early paradigm easy

With svn/cvs you need more-or-less a permanent connection to
"the server". With git I can work off-line and update (both ways)
when connected.

Regards,
/Karl Hammar

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-07 Thread Noeck

> so, my follow up question: why use git as a single user? 

I always use git, event git-svn for svn repos.
Comparing to CVS and SVN, I see these advantages:

- easy branching
- I am a heavy user of git rebase
- being able to commit, branch, diff etc. without internet connection
  that way I can work on a train, for example
- this makes the commit often & early paradigm easy

As I have learned git and svn at the same time, there was no point in
really using svn, because I can have the same but much more with git.

Cheers,
Joram


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools

2014-01-07 Thread Urs Liska

Am 07.01.2014 14:38, schrieb Simon Bailey:


On Tue, Jan 7, 2014 at 2:27 PM, Urs Liska mailto:u...@openlilylib.org>> wrote:

As a follow-up question I'd be interested in whether people use
other version control systems beside Git. If you use more than one,
a short comparison would be of general interest I think.


i use svn, that's what i know professionally and have been using for
more than 10 years (probably closer to 15). for me as a single user, i
see no benefit in using git -- i have my SVN repo on a server, and use
that as a backup and interchange solution for working on 3 or 4
different computers. on the macs i use cornerstone, windows TortoiseSVN
and on linux command line.

so, my follow up question: why use git as a single user? this is not a
flame-war, i'm genuinely interested in any advantage that git will give
me over svn. the most misused argument i hear, "you can check in
regularly on your local machine and then send a big check-in to the
repository later" doesn't do it for me. i generally check-in once a day,
or when changing computers or when a score reaches milestones (initial
setup, music entry finished, tweaking finished, final layout, etc.). i
don't need to micro-manage my versions every time i add a musical
phrase... ;)

regards,
sb


Thanks for the opinion. Unfortunately I can't help you with your 
follow-up question (due to lack of experience).


I don't think it would be advisable to encourage any _new_ user to learn 
SVN or CVS (if it isn't for a specific project of interest), but for 
your use case this is surely a valid question.


One think I love about decentralized version control systems (which 
again doesn't apply to your use case) is that you can interact between 
multiple forks of the repository.
For example I can add the repos of all the other Frescobaldi 
contributors as remotes and fetch their branches before they have even 
opened pull requests (or the other way round: I can ask others to test 
my branches before I open a pull request). Or I can collaborate with a 
given contributor and we prepare a feature branch together before 
opening the pull request.


Ah, finally one idea about your question, not based on experience but on 
randomly read statements: How can you use branches with SVN? If it's 
correct that Git branches are conceptually different through being so 
exceptionally light-weight then I'd think this _is_ an advantage even 
for a single user.


Urs


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Version control tools (was: Survey: Git (G)UIs)

2014-01-07 Thread Simon Bailey
On Tue, Jan 7, 2014 at 2:27 PM, Urs Liska  wrote:
>
> As a follow-up question I'd be interested in whether people use other
> version control systems beside Git. If you use more than one, a short
> comparison would be of general interest I think.
>

i use svn, that's what i know professionally and have been using for more
than 10 years (probably closer to 15). for me as a single user, i see no
benefit in using git -- i have my SVN repo on a server, and use that as a
backup and interchange solution for working on 3 or 4 different computers.
on the macs i use cornerstone, windows TortoiseSVN and on linux command
line.

so, my follow up question: why use git as a single user? this is not a
flame-war, i'm genuinely interested in any advantage that git will give me
over svn. the most misused argument i hear, "you can check in regularly on
your local machine and then send a big check-in to the repository later"
doesn't do it for me. i generally check-in once a day, or when changing
computers or when a score reaches milestones (initial setup, music entry
finished, tweaking finished, final layout, etc.). i don't need to
micro-manage my versions every time i add a musical phrase... ;)

regards,
sb
-- 
Do not meddle in the affairs of trombonists, for they are subtle and quick
to anger.
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Version control tools (was: Survey: Git (G)UIs)

2014-01-07 Thread Urs Liska

Am 06.01.2014 13:53, schrieb Urs Liska:

Hi all Git users,

I'd like to make a survey on how you are working with Git.


Thank you all for your feedback!
It was very interesting and inspiring for me.

Due to its sheer number I can't reply to all opinions individually. 
Maybe I'll come back to this/these when I'm writing the next blog post.


As a follow-up question I'd be interested in whether people use other 
version control systems beside Git. If you use more than one, a short 
comparison would be of general interest I think.


Urs

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user