Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions conf/fish/funcs/jj-mega-up.fish
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# for mega-merge rev `m-m`
# find heads of m-m that is ancestor of rev.
# if found as <found>, first run `jj-mega-merge -t m-m -f <rev>`
# then run `jj-mega-merge -t m-m --remove <found>`

function jj-mega-up --description "update mega-merge-heads"
argparse 'h/help' 't/to=' -- $argv
or return
# to default to m-m

# set help string
set -l help_string "Usage: jj-mega-up [--to <merge-to-rev>] <from-rev>"

if set -ql _flag_help
echo $help_string
return 0
end

# to default to m-m
set -l target_rev $_flag_to
if not set -q target_rev || test -z "$target_rev"
set target_rev "m-m"
end
if test -z "$target_rev"
echo "缺少 <target-rev> 参数,且默认值 m-m 也为空"
echo $help_string
return 1
end

# 取第一个非选项参数作为 from_rev
set -l from_rev $argv[1]
if not set -q from_rev || test -z "$from_rev"
echo "缺少 <from-rev> 参数"
echo $help_string
return 1
end

# 查找 trunk()..$from_rev & parents($target_rev)
set -l found_revs (jj log -r "(trunk()..$from_rev) & parents($target_rev)" --no-graph --template 'change_id.shortest(7) ++ " \t" ++ description.first_line()' --no-pager)
set -l found_count (count $found_revs)

if test $found_count -eq 0
echo "没有找到可用的父节点,更新 $target_rev 到 mega-merge heads 中"
echo "> jj-mega-merge -t $target_rev -f $from_rev"
# jj-mega-merge -t $target_rev -f $from_rev
return 0
end

set -l pick_rev
if test $found_count -eq 1
set pick_rev (string split " " $found_revs[1])[1]
else if test $found_count -gt 1
set -l pick_line (printf '%s\n' $found_revs | fzf --ansi --layout=reverse --prompt='选择要移除的父节点: ')
if test -z "$pick_line"
echo "未选择任何节点"
return 1
end
set pick_rev (string split " " $pick_line)[1]
end

echo ""
echo "To remove: "(set_color red)$pick_rev(set_color normal)
echo ""

# 先合并
# echo "jj-mega-merge -t $target_rev -f $from_rev"
jj-mega-merge -t $target_rev -f $from_rev
# 再移除
# echo "jj-mega-merge -t $target_rev --remove $pick_rev"
jj-mega-merge -t $target_rev --remove $pick_rev
end

# jj-mega-up $argv
4 changes: 3 additions & 1 deletion nix/hm/jj.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ in
};
git = {
auto-local-bookmark = false;
subprocess = true;
fetch = [
"origin"
];
Expand Down Expand Up @@ -739,6 +738,9 @@ in
".config/fish/functions/jj-fork-main.fish" = {
source = ../../conf/fish/funcs/jj-fork-main.fish;
};
".config/fish/functions/jj-mega-up.fish" = {
source = ../../conf/fish/funcs/jj-mega-up.fish;
};
".config/fish/functions/jj-fork-master.fish" = {
source = ../../conf/fish/funcs/jj-fork-master.fish;
};
Expand Down
Loading