stockholm/krebs/5pkgs/simple/git-preview/default.nix

21 lines
795 B
Nix
Raw Normal View History

2017-10-17 21:37:37 +00:00
{ coreutils, git, writeDashBin }:
2017-09-21 21:36:34 +00:00
writeDashBin "git-preview" ''
2017-10-17 21:37:37 +00:00
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 \
''${GIT_PREVIEW_MERGE_STRATEGY+-s "$GIT_PREVIEW_MERGE_STRATEGY"} \
-m "$merge_message" \
-q \
"$merge_commit"
2017-10-17 21:37:37 +00:00
${git}/bin/git -C "$preview_dir" diff "$head_commit.." "$@"
${coreutils}/bin/rm -fR "$preview_dir"
${coreutils}/bin/rm -R .git/worktrees/"$preview_name"
2017-09-21 21:36:34 +00:00
''