Merge remote-tracking branch 'ni/master'
This commit is contained in:
commit
d380d6060e
@ -1,15 +1,16 @@
|
||||
{ coreutils, git, stdenv, writeDashBin }:
|
||||
{ coreutils, git, writeDashBin }:
|
||||
|
||||
writeDashBin "git-preview" ''
|
||||
PATH=${stdenv.lib.makeBinPath [
|
||||
coreutils
|
||||
git
|
||||
]}''${PATH+:$PATH}
|
||||
hashes=$(git log --format=%h "..$1")
|
||||
end=$(echo "$hashes" | head -1)
|
||||
start=$(echo "$hashes" | tail -1)
|
||||
# exit if no diff was found
|
||||
test -z "$start" && exit 0
|
||||
shift
|
||||
git diff "$start^..$end" "$@"
|
||||
set -efu
|
||||
head_commit=$(${git}/bin/git log -1 --format=%H)
|
||||
merge_commit=$1; shift
|
||||
merge_message='Merge for git-preview'
|
||||
preview_dir=$(${coreutils}/bin/mktemp --tmpdir -d git-preview.XXXXXXXX)
|
||||
preview_name=$(${coreutils}/bin/basename "$preview_dir")
|
||||
${git}/bin/git worktree add --detach -f "$preview_dir" 2>/dev/null
|
||||
${git}/bin/git -C "$preview_dir" checkout -q "$head_commit"
|
||||
${git}/bin/git -C "$preview_dir" merge -qm "$merge_message" "$merge_commit"
|
||||
${git}/bin/git -C "$preview_dir" diff "$head_commit.." "$@"
|
||||
${coreutils}/bin/rm -fR "$preview_dir"
|
||||
${coreutils}/bin/rm -R .git/worktrees/"$preview_name"
|
||||
''
|
||||
|
Loading…
Reference in New Issue
Block a user