Add git-squash-merge script

This commit is contained in:
Oliver Davies 2024-11-25 23:27:22 +00:00
parent adcbb914f1
commit 150182149a
3 changed files with 45 additions and 1 deletions

View file

@ -146,7 +146,10 @@
};
};
home.packages = [ pkgs.git-instafix ];
home.packages = with pkgs; [
git-instafix
git-squash-merge
];
home.sessionVariables = {
GIT_INSTAFIX_UPSTREAM = "origin/main";

View file

@ -5,6 +5,7 @@ let
in
{
build-glove80 = callPackage ./build-glove80.nix { };
git-squash-merge = callPackage ./git-squash-merge.nix { };
vimPlugins = prev.vimPlugins // {
conf-vim = callPackage ./vim-plugins/conf-vim.nix { };

View file

@ -0,0 +1,40 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "git-squash-merge";
runtimeInputs = with pkgs; [
bashInteractive
coreutils
git
];
text = ''
branch_to_merge=$1
target_branch=''${2:-main}
if [[ -z "$branch_to_merge" ]]; then
echo "Usage: $0 <branch-to-merge> [target-branch]"
exit 1
fi
if ! git checkout "$target_branch"; then
echo "Error: Failed to checkout target branch '$target_branch'."
exit 1
fi
if ! git merge --squash "$branch_to_merge"; then
echo "Error: Squash merge from '$branch_to_merge' to '$target_branch' failed."
exit 1
fi
squashed_commit_messages=$(git log "$target_branch..$branch_to_merge" --reverse --pretty=format:"%h %s%n%b%n")
temp_file=$(mktemp)
echo -e "$squashed_commit_messages" > "$temp_file"
GIT_COMMIT_EDITMSG="$temp_file" git commit --edit
rm -f "$temp_file"
'';
}