Re: [PATCH QGit RFC] Fix "Save patch..." on a commit range
- From
Markus Heidelberg <markus.heidelberg@web.de>
- Date
- Jun 13, 2009, 10:11 UTC
- Message-ID
- <200906131211.39361.markus.heidelberg@web.de>
- In-Reply-To
- <e5bfff550906130013j3a9802cen48ac5828a2357bf1@mail.gmail.com>
Marco Costalba, 13.06.2009:
Show 26 quoted lines
> On Sat, Jun 13, 2009 at 00:29, Markus > Heidelberg<markus.heidelberg@web.de> wrote: > > Creating a patch series didn't work, because the SHA1 list was > > interpreted in the wrong order. > > > > Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de> > > --- > > I think they are generated in apply order as should be. > > As example, from git repo we have the following revisions: > > GIT 1.6.3 > t4029: use sh instead of bash > t4200: convert sed expression which operates on non-text file to perl > t4200: remove two unnecessary lines > > Now if I select the 4 revisions and use "Save patch..." I have > > 0001-t4200-remove-two-unnecessary-lines.patch > 0002-t4200-convert-sed-expression-which-operates-on-non.patch > 0003-t4029-use-sh-instead-of-bash.patch > 0004-GIT-1.6.3.patch > > That is correct because if I go to apply the patches I have to apply > in the reverse cronological order, from the oldest to the newest.
Sorry, I didn't describe the problem proper. The problem was not about the order of the created patches - it's that I can't create multiple patches at all.
If I only select 1 revision and use "Save patch..." I get 0001-xyz.patch, which is correct.
But if I select 2 or more revisions, I don't get any patch file.
For example, with the following DAG:
A---B---C---D---E
If I select B to D and use "Save patch...", Qgit creates the following command:
git format-patch -o /home/markus D^..B
but D^..B obviously is empty.
My patch now changes it, so that this command is produced:
git format-patch -o /home/markus B^..D
which generates 3 patches.
OK, that was the state from yesterday. While testing a bit more, I can notice some really strange behavior:
I managed to get the following shaList in Git::formatPatch(): D, B, C which led to this revision range in the command: C^..D which produced 2 patches.
After several tests it seems as if the revisions C and D are always the first and last of the shaList variable, if they are included in the selection. Selecting only the first and last revision with Ctrl+LeftMouse instead of all including the ones in between with Shift+LeftMouse works.
Hmm, I will look some more into it...
Markus