mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
; admin/notes/git-workflow
Prefer "release branch" to a specific branch that can only ever get outdated.
This commit is contained in:
parent
20c1e7f8af
commit
97146efdc6
1 changed files with 13 additions and 12 deletions
|
|
@ -15,14 +15,15 @@ Initial setup
|
|||
=============
|
||||
|
||||
Then we want to clone the repository. We normally want to have both
|
||||
the current master and the emacs-26 branch.
|
||||
the current master and (if there is one) the active release branch
|
||||
(eg emacs-27).
|
||||
|
||||
mkdir ~/emacs
|
||||
cd ~/emacs
|
||||
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git master
|
||||
cd master
|
||||
git config push.default current
|
||||
git worktree add ../emacs-26 emacs-26
|
||||
git worktree add ../emacs-27 emacs-27
|
||||
|
||||
You now have both branches conveniently accessible, and you can do
|
||||
"git pull" in them once in a while to keep updated.
|
||||
|
|
@ -52,11 +53,11 @@ you commit your change locally and then send a patch file as a bug report
|
|||
as described in ../../CONTRIBUTE.
|
||||
|
||||
|
||||
Backporting to emacs-26
|
||||
=======================
|
||||
Backporting to release branch
|
||||
=============================
|
||||
|
||||
If you have applied a fix to the master, but then decide that it should
|
||||
be applied to the emacs-26 branch, too, then
|
||||
be applied to the release branch, too, then
|
||||
|
||||
cd ~/emacs/master
|
||||
git log
|
||||
|
|
@ -66,7 +67,7 @@ which will look like
|
|||
|
||||
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
cd ~/emacs/emacs-26
|
||||
cd ~/emacs/emacs-27
|
||||
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
and add "Backport:" to the commit string. Then
|
||||
|
|
@ -74,17 +75,17 @@ and add "Backport:" to the commit string. Then
|
|||
git push
|
||||
|
||||
|
||||
Merging emacs-26 to the master
|
||||
==============================
|
||||
Merging release branch to the master
|
||||
====================================
|
||||
|
||||
It is recommended to use the file gitmerge.el in the admin directory
|
||||
for merging 'emacs-26' into 'master'. It will take care of many
|
||||
for merging the release branch into 'master'. It will take care of many
|
||||
things which would otherwise have to be done manually, like ignoring
|
||||
commits that should not land in master, fixing up ChangeLogs and
|
||||
automatically dealing with certain types of conflicts. If you really
|
||||
want to, you can do the merge manually, but then you're on your own.
|
||||
If you still choose to do that, make absolutely sure that you *always*
|
||||
use the 'merge' command to transport commits from 'emacs-26' to
|
||||
use the 'merge' command to transport commits from the release branch to
|
||||
'master'. *Never* use 'cherry-pick'! If you don't know why, then you
|
||||
shouldn't manually do the merge in the first place; just use
|
||||
gitmerge.el instead.
|
||||
|
|
@ -97,11 +98,11 @@ up-to-date by doing a pull. Then start Emacs with
|
|||
emacs -l admin/gitmerge.el -f gitmerge
|
||||
|
||||
You'll be asked for the branch to merge, which will default to
|
||||
'origin/emacs-26', which you should accept. Merging a local tracking
|
||||
(eg) 'origin/emacs-27', which you should accept. Merging a local tracking
|
||||
branch is discouraged, since it might not be up-to-date, or worse,
|
||||
contain commits from you which are not yet pushed upstream.
|
||||
|
||||
You will now see the list of commits from 'emacs-26' which are not yet
|
||||
You will now see the list of commits from the release branch that are not yet
|
||||
merged to 'master'. You might also see commits that are already
|
||||
marked for "skipping", which means that they will be merged with a
|
||||
different merge strategy ('ours'), which will effectively ignore the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue