emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using Git to manage your Emacs changes


From: David Reitter
Subject: Re: Using Git to manage your Emacs changes
Date: Wed, 21 Apr 2010 14:12:36 -0400

On Apr 21, 2010, at 1:30 PM, Ted Zlatanov wrote:
> 
> DR> What about the reliable, simple, wonderful git mirror at 
> http://repo.or.cz/w/emacs.git ?
> 
> How reliable is it WRT recent commits?  Do they show up quickly or is
> there a manual process?  We're just discussing something similar
> concerning Gnus <-> Emacs synchronization so this could help us.

I find it very reliable.  As far as I know, it is updated manually and at least 
daily, so it is usually very current.  You should ask Andreas if there have 
been any problems with the conversion requiring manual intervention; if not, it 
could probably be automated and done hourly or so.  A big, big thank you from 
me for maintaining it.

The bigger issue with this is that the mirror isn't perfectly "official", which 
means that it could go away, or, worse, be rebased.  Essentially this happened 
when Emacs switched from CVS to Bzr, and the git mirror that we used to have on 
Savannah went away.  The new mirror wasn't compatible.

Re-basing is not an easy option for Aquamacs, due to multiple past merges.  
Right now we're carrying around both histories (the old Git mirror and the new 
one).  So it's maybe 200.000 revisions.  Ultimately I might be able to rewrite 
it, but I'm waiting for the Git mirror to be automated.

Overall, working on my downstream project has been great with git.  Merges are 
fast and very reliable.  A git-pull from the Cz only takes a few seconds; same 
for the merge.  I set up to three branches for my project (Emacs 22 based, 
Emacs 23 based, and Emacs 24/trunk based).  The 23 one merges directly into the 
24 one, and the 22 one cherry-picks bug-fixes (but not features) from the 23 
one.  Where conflicts arise, I use "git mergetool" which fires up FileMerge (a 
wonderful graphical tool).  I use GitX occasionally to visualize some piece of 
history or search for a change.  GitX is slow with those 200k revisions.  I 
usually I use the command line or Emacs VC, especially for showing diffs, logs, 
and "git blame" (C-x v g).  I use the "git new-workdir" extension to keep 
multiple branches in parallel without having to have separate copies of the 
repository.

I have a "speed" complaint: when Emacs opens a file it does some status check 
with Git before actually displaying it (rather than in the background).  The 
first time, this takes a while.  Also,  on my old laptop, git-blame takes maybe 
20 seconds on the large source files, which is unnecessary given that one 
usually just wants "blame" for a few lines of code.

Generally though, it's blazingly fast; I've had no strange error message from 
git so far, and I've had no incompatibilities with git versions or repositories 
either.  Where I make mistakes of my own with git, I can often "git reset 
--hard" to rewind my changes unless I've already pushed them to our server 
(github). 

I hope this helps you in some way; if you have questions, do get in touch 
privately.  I reckon most people here aren't too interested in this.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]