mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
45540: vcs_info git: In non-interactive rebases, compute patch names for unapplied patches.
This commit is contained in:
parent
5a1f5cf8ab
commit
e1946bacf8
3 changed files with 32 additions and 8 deletions
|
@ -1,5 +1,10 @@
|
|||
2020-03-15 Daniel Shahaf <danielsh@apache.org>
|
||||
|
||||
* 45540: Doc/Zsh/contrib.yo,
|
||||
Functions/VCS_Info/Backends/VCS_INFO_get_data_git: vcs_info git:
|
||||
In non-interactive rebases, compute patch names for unapplied
|
||||
patches.
|
||||
|
||||
* 45543: Functions/VCS_Info/VCS_INFO_quilt, README: vcs_info
|
||||
quilt: Allow quiltcommand to be a function.
|
||||
|
||||
|
|
|
@ -1177,7 +1177,7 @@ If there are two different ways of gathering
|
|||
information, you can select the simpler one by setting this style to true;
|
||||
the default is to use the not-that-simple code, which is potentially a lot
|
||||
slower but might be more accurate in all possible cases. This style is
|
||||
used by the tt(bzr) and tt(hg) backends. In the case of tt(hg) it will invoke
|
||||
used by the tt(bzr), tt(hg), and tt(git) backends. In the case of tt(hg) it will invoke
|
||||
the external hexdump program to parse the binary dirstate cache file; this
|
||||
method will not return the local revision number.
|
||||
)
|
||||
|
@ -1236,7 +1236,7 @@ item(tt(get-unapplied))(
|
|||
This boolean style controls whether a backend should attempt to gather a list
|
||||
of unapplied patches (for example with Mercurial Queue patches).
|
||||
|
||||
Used by the tt(quilt) and tt(hg) backends.
|
||||
Used by the tt(quilt), tt(hg), and tt(git) backends.
|
||||
)
|
||||
enditem()
|
||||
|
||||
|
|
|
@ -261,17 +261,20 @@ elif [[ -d "${gitdir}/rebase-apply" ]]; then
|
|||
# 'git rebase' without -i
|
||||
patchdir="${gitdir}/rebase-apply"
|
||||
local next="${patchdir}/next"
|
||||
local this_patch_file
|
||||
if [[ -f $next ]]; then
|
||||
local cur=$(< $next)
|
||||
local p subject
|
||||
# Fake patch names for all but current patch
|
||||
# Fake patch names for patches "before" the current patch
|
||||
#
|
||||
# Note: With git 2.24, (( cur == 1 )), so the loop body never runs.
|
||||
for ((p = 1; p < cur; p++)); do
|
||||
printf -v "git_patches_applied[$p]" "%04d ?" "$p"
|
||||
done
|
||||
# Set $subject to the info for the current patch
|
||||
if [[ -f "${patchdir}/msg-clean" ]]; then
|
||||
subject="${$(< "${patchdir}/msg-clean")[(f)1]}"
|
||||
elif local this_patch_file
|
||||
printf -v this_patch_file "%s/%04d" "${patchdir}" "${cur}"
|
||||
elif printf -v this_patch_file "%s/%04d" "${patchdir}" "${cur}"
|
||||
[[ -f $this_patch_file ]]
|
||||
then
|
||||
() {
|
||||
|
@ -286,11 +289,27 @@ elif [[ -d "${gitdir}/rebase-apply" ]]; then
|
|||
else
|
||||
git_patches_applied+=("? $subject")
|
||||
fi
|
||||
local last="$(< "${patchdir}/last")"
|
||||
if (( cur+1 <= last )); then
|
||||
git_patches_unapplied=( {$((cur+1))..$last} )
|
||||
# Handle patches scheduled for after the current patch, if instructed to.
|
||||
if zstyle -t ":vcs_info:${vcs}:${usercontext}:${rrn}" get-unapplied; then
|
||||
local last="$(< "${patchdir}/last")"
|
||||
if [[ -r ${patchdir}/original-commit && -r ${patchdir}/orig-head ]] &&
|
||||
! zstyle -t ":vcs_info:${vcs}:${usercontext}:${rrn}" use-simple
|
||||
then
|
||||
git_patches_unapplied+=( ${(f)"$(${vcs_comm[cmd]} log --reverse --pretty="%h %s" "$(<${patchdir}/original-commit)..$(<${patchdir}/orig-head)")"} )
|
||||
else
|
||||
for ((p = cur+1; p <= last; p++)); do
|
||||
printf -v this_patch_file "%s/%04d" "${patchdir}" "${p}"
|
||||
if [[ -f $this_patch_file ]]; then
|
||||
VCS_INFO_patch2subject "${this_patch_file}"
|
||||
git_patches_unapplied+=( "$p $REPLY" )
|
||||
else
|
||||
git_patches_unapplied+=( "$p ?" )
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
unset this_patch_file
|
||||
|
||||
VCS_INFO_git_handle_patches
|
||||
elif [[ -f "${gitdir}/MERGE_HEAD" ]]; then
|
||||
|
|
Loading…
Reference in a new issue