[Pkg-zsh-devel] [RFC] Git workflow, take #2
Frank Terbeck
ft at bewatermyfriend.org
Fri Feb 18 12:23:37 UTC 2011
Hey * (again),
I've been throwing my initial proposal away entirely.
I have also been considering Axel's comments closely. What follows is my
new take on the subject. It's basically two branches, quilt and some
merging (no rebasing anymore).
I'm pretty confident, that this will fit out needs, but I'm obviously
open for suggestions. :-)
I'm also pretty sure that this would work to keep `zsh' and `zsh-beta'
in the same repository, if that's what we (and Clint) would want (that
would just require another branch, that would do the same as the
`debian' branch for the `zsh' package).
There's some ASCII art included, so read this using a monospaced
font. Also, this is not exhaustive yet. If we're deciding that the basic
concept is sound, I'm willing to put this into way more detailed
descriptions.
Here we go:
* Branches
This is a quick overview of the branches that are being used for
debian's zsh package maintenance. This part does not go into much
detail on how the workflow works. For details about that, see the
`Workflow' part below.
** upstream
The upstream sources from <git://zsh.git.sf.net/gitroot/zsh/zsh>.
** debian
The debian changes for the debian `zsh' package.
This should initially be based on a clean commit tag from
`upstream'. When a new upstream release happens, we can merge all
code changes from the `upstream' branch upto that commit (tag).
** others
These branches are rather optional and not required for basic
maintenance for of the `zsh' package.
*** master
That's the old repository's main branch. We could keep this for
historical reasons. Or not. I don't have an opinion.
*** debian-beta
This could basically do *exactly* the same thing as `debian' does,
but just merge more often. Obviously, that could then be used to
keep the packaging information for `zsh-beta' if Clint wants to do
that.
* Workflow
This is a diagram, that outlines the proposed workflow. Basically,
the `debian' branch walks alongside the `upstream' branch and
upstream changes get merged into `debian' at defined points (for the
non-beta zsh package, that should be upstream commit tags).
* debian/4.3.11-4
|
| * debian/4.3.11-5
| |
| | * debian/4.3.12-1
| | |
| | | * debian/4.3.12-2
| | | |
| | | | * debian/4.3.13-1
| | | | |
| | | | | * debian/4.3.13-2
| | | | | |
| | | | | | * debian/4.3.13-3
| | | | | | |
| | | | | | |
a-b-c-d---e-f-g-h-i-------j-k-l-m-n-o `debian'
/ / /
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q `upstream'
| | |
| | |
| | * zsh-4.3.13
| * zsh-4.3.12
|
* zsh-4.3.11
** Initial setup
The current debian version (which is based on the old workflow) is
4.3.11-3. An initial version on the new workflow would therefore be
4.3.11-4. It should be based on the upstream tag 4.3.11, and the
following changes need to be made:
- Add the debian/ directory
- Add a quilt patch for the `fuser' completion fix, that was
included in 4.3.11-3 (this is the only non-debian-dir patch that
is in this revision).
- A quilt patch that adds a ./configure script needs to be added.
- The issue regarding the installation of `Etc/FAQ' needs to be
addressed.
- Three new quilt patches for #613162, #611175 and zsh-workers
28588 should be created.
- Update debian/changelog
That should be everthing that would be needed to get debian version
4.3.11-4 out of the door.
** Working on the package
Every change to the source (non-debian-dir) should be done by
adding quilt patches. Permanent patches (patches that would be kept
in 4.3.12-1) should be named specially ("deb_*" comes to mind).
When a change justifies the release of a new package version, the
debian/changelog file should be updated (possibly by using git-dch)
and the resulting commit should be tagged debian/<zsh-version>-n+1.
** Transitioning to a new upstream version
When upstream releases a new version, we should follow these steps:
- Remove all non "deb_*" quilt patches (because the non-permanent
patches should be included in the upstream version already).
- Merge `upstream' into `debian'.
- Update the ./configure script patch in order to catch
configure.ac changes upstream may have done.
- update debian/changelog, "New upstream release".
- Tag debian/<new-zsh-version>-1.
** Generating packages
I have been evaluating whether `gitpkg' could fit our workflow. And
I'm fairly sure it does.
The tool is fairly flexible, but its basic usage is quite simple,
which is something I liked most about it.
Say, you'd like to build a package 4.3.12-5, you'd to this:
% gitpkg debian/4.3.12-5 zsh-4.3.12
And then you'd end up with the resulting package directory being
set up in ../deb-packages/zsh/zsh-4.3.12/ with .orig.tar and
.debian.tar being available in ../deb-package/zsh/.
As far as I can see, that would fit our needs perfectly.
More information about the Pkg-zsh-devel
mailing list