Skip to content

Commit 34b5882

Browse files
abhinavjpgrayson
authored andcommitted
refresh: Support --diff with --edit
Add a `--diff` flag to `stg refresh` that, when used with `--edit`, is equivalent to `stg edit --diff`. Resolves #98
1 parent c0a2d92 commit 34b5882

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

stgit/commands/refresh.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@
105105
action='store_true',
106106
short='Invoke an editor for the patch description',
107107
),
108+
opt(
109+
'-d',
110+
'--diff',
111+
action='store_true',
112+
short='Edit the patch diff if -e was set',
113+
),
108114
opt(
109115
'-a',
110116
'--annotate',
@@ -380,6 +386,7 @@ def __refresh(
380386
include_submodules=False,
381387
no_verify=False,
382388
invoke_editor=False,
389+
edit_diff=False,
383390
):
384391
stack = directory.repository.current_stack
385392

@@ -455,7 +462,7 @@ def edit_fun(cd):
455462
)
456463
if invoke_editor:
457464
cd, failed_diff = interactive_edit_patch(
458-
stack.repository, cd, edit_diff=False, diff_flags=[]
465+
stack.repository, cd, edit_diff=edit_diff, diff_flags=[]
459466
)
460467
assert not failed_diff
461468
if not no_verify and (invoke_editor or cd.message != orig_msg):
@@ -522,4 +529,5 @@ def func(parser, options, args):
522529
include_submodules=options.submodules,
523530
no_verify=options.no_verify,
524531
invoke_editor=options.edit,
532+
edit_diff=options.diff,
525533
)

t/t7504-commit-msg-hook.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,4 +317,22 @@ test_expect_success "squash hook doesn't edit commit message (editor)" '
317317
commit_msg_is "more plus"
318318
'
319319

320+
write_script diffedit <<EOF
321+
sed \
322+
-e 's/old content/new content/' \
323+
-e 's/old message/new message/' "\$1" > "\$1".tmp && mv "\$1".tmp "\$1"
324+
exit 0
325+
EOF
326+
test_expect_success "refresh hook edits message and diff (editor)" '
327+
stg new -m "old message" p1 &&
328+
echo "old content" > file &&
329+
stg add file &&
330+
stg refresh -i &&
331+
GIT_EDITOR=./diffedit stg refresh -d -e &&
332+
git log --pretty=format:%s%b -1 &&
333+
commit_msg_is "new message" &&
334+
test "$(grep "new content" file)" = "new content"
335+
'
336+
rm -f diffedit
337+
320338
test_done

0 commit comments

Comments
 (0)