[Top][All Lists]

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

A simple git workflow for the rest of us

From: Lars Magne Ingebrigtsen
Subject: A simple git workflow for the rest of us
Date: Sat, 15 Nov 2014 17:09:59 +0100
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/25.0.50 (gnu/linux)

I have committed the text below to admin/notes.  I expect all git
experts to be all horrified and stuff, but if you don't care about git
kremlinology, but just want to fix bugs and stuff in Emacs, I don't
think you really need to know.

Feel free to fix the recipes in admin/notes.  But please refrain from
using the words "ref", "staging", "stash" or "local".


(This is a draft.  The method here won't actually work yet, because
neither git-new-workdir nor merge-changelog are in the Emacs
distribution yet.)

Setting up and using git for normal, simple bugfixing

If you haven't configured git before you should first do:

git config --global user.name "Frank Chu"
git config --global user.email "address@hidden"

Initial setup

Then we want to clone the repository.  We normally want to have both
the current trunk and the emacs-24 branch.

mkdir ~/emacs
cd ~/emacs
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git
mv emacs trunk
./trunk/admin/git-new-workdir trunk emacs-24
cd emacs-24
git checkout emacs-24

You now have both branches conveniently accessible, and you can do
"git pull" in them once in a while to keep updated.

Fixing bugs

You edit the files in either branch, `M-x vc-dir', and check in your
changes.  Then you need to push the data to the main repository.  This
will usually fail, since somebody else has pushed other changes in the
meantime.  To fix this, say

git pull --rebase

which will update your repository, and then re-apply your changes on
top of that.  Then say

git push

Backporting to emacs-24

If you have applied a fix to the trunk, but then decide that it should
be applied to the emacs-24 branch, too, then

cd ~/emacs/trunk
git log

and find the commit you're looking for.  Then find the commit ID,
which will look like

commit 958b768a6534ae6e77a8547a56fc31b46b63710b

cd ~/emacs/emacs-24
git cherry-pick 958b768a6534ae6e77a8547a56fc31b46b63710b
git commit --amend

and add "Backport:" to the commit string.  Then

git push

Merging emacs-24 to trunk

This has yet to be written.

(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no

reply via email to

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