Package: dgit
Version: 8.4
Severity: wishlist

In case of the Debian maintainer is the same person as the upstream
maintainer, I would like to see automatic support to the operation
described in dgit-maint-merge(7).  This is nice alternative to native
package workflow and nice upstream history.

|FORWARDING PATCHES UPSTREAM
| The basic steps are:
|
| 1.  Create a new branch based off upstream's master branch.
|
| 2.  git-cherry-pick(1) commits from your master branch onto your new branch.
|
| 3.  Push the branch somewhere and ask upstream to merge it, or use 
git-format-patch(1) or git-request-pull(1).
|
| For example (and it is only an example):
|
|     % # fork foo.git on GitHub
|     % git remote add -f fork g...@github.com:spwhitton/foo.git
|     % git checkout -b fix-error upstream/master
|     % git config branch.fix-error.pushRemote fork
|     % git cherry-pick master^2
|     % git push
|     % # submit pull request on GitHub
|
| Note that when you merge an upstream release containing your forwarded 
patches, git and dgit will transparently handle "dropping" the patches that 
have been forwarded, "retaining" the ones that
| haven't.

This is quite a chore which may be helped by automation.

I want automated operation which goes like:

1) Full automatic

 $ dgit update-upstream

 * for commit changing within debian/* only
   --> ignore
 * for commit changing outside of debian/* only
   --> apply as is with the same commit messages<F12>
 * for commit changing everything
   --> apply changes outside of debian/*
   --> use the same commit message
 * merge commit from the last upstream commit to master branch

Please note changes are taken from the last commit point used for merge

2) List commit candidates

 $ dgit update-upstream -l
   drop 5c8c1e update packaging policy
   pick 192837 Switch from GNU Makefiles to CMake
   trim 5a6c7e Document the switch to CMake
   pick 918273 Fix detection of OpenSSL in CMake
   pick afbecd http: add support for TLS v1.3
   pick fdbaec Fix detection of cURL in CMake on Windows

3) Exclude specific commits with commandline

 $ dgit update-upstream -x 12345678 -x 1a2b3c4d

 * Do the same as "Full automatic" but exclude commit hash 12345678 and 1a2b3c4d

4) Exclude specific commits with editor selection:

 $ dgit update-upstream -i

 * make git-rebase like editor dialog marking each commit with
   list sent to editor as:
   drop 5c8c1e update packaging policy
   pick 192837 Switch from GNU Makefiles to CMake
   trim 5a6c7e Document the switch to CMake
   pick 918273 Fix detection of OpenSSL in CMake
   pick afbecd http: add support for TLS v1.3
   pick fdbaec Fix detection of cURL in CMake on Windows
 Here;
   - drop drop debian/* changes
   - pick pick upstream only change
   - trim trim debian/* changes but pick upstream only change
 User can specify:
   - drop   (for any)
   - pick   (for pick)
   - trim   (for trim)
   - reword (for pick or trim) --> allow to change commit message

If the last 4) is too much, maybe we can skip since this is easily 
done with "git rebase -i ?????" after "dgit update-upstream"

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing'), (10, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages dgit depends on:
ii  apt                     1.8.0
ii  ca-certificates         20190110
ii  coreutils               8.30-3
ii  curl                    7.64.0-1
ii  devscripts              2.19.4
ii  dpkg-dev                1.19.5
ii  dput                    1.0.3
ii  git [git-core]          1:2.20.1-2
ii  git-buildpackage        0.9.13
pn  libdigest-sha-perl      <none>
ii  libdpkg-perl            1.19.5
ii  libjson-perl            4.02000-1
ii  liblist-moreutils-perl  0.416-1+b4
ii  liblocale-gettext-perl  1.07-3+b4
ii  libtext-glob-perl       0.10-1
ii  libtext-iconv-perl      1.7-5+b7
ii  libwww-perl             6.36-1
ii  perl                    5.28.1-5

Versions of packages dgit recommends:
ii  openssh-client [ssh-client]  1:7.9p1-9

Versions of packages dgit suggests:
ii  cowbuilder  0.88
ii  pbuilder    0.230.2

-- no debconf information

Reply via email to