Message ID | 20190113135815.11286-2-luke@diamand.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | git-p4: handle moved files when updating a P4 shelve | expand |
On Sun, Jan 13, 2019 at 8:58 AM Luke Diamand <luke@diamand.org> wrote: > Updating a shelved P4 changelist where one or more of the files have > been moved does not work. Add a test for this. Perhaps this message could give more detail about the actual problem than the generic "does not work" which provides no useful information. > Signed-off-by: Luke Diamand <luke@diamand.org> > --- > diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh > @@ -500,6 +500,12 @@ test_expect_success 'submit --shelve' ' > +last_shelve() { > + change=$(p4 -G changes -s shelved -m 1 //depot/... | \ > + marshal_dump change) > + echo $change > +} A simpler definition for this function would be: last_shelve () { p4 -G changes -s shelved -m 1 //depot/... | marshal_dump change } which will give the same result when you later capture its output with: change=$(last_shelve) && > @@ -533,12 +539,53 @@ test_expect_success 'submit --update-shelve' ' > ) && > ( > cd "$cli" && > - change=$(p4 -G changes -s shelved -m 1 //depot/... | \ > - marshal_dump change) && > + change=$(last_shelve) && > p4 unshelve -c $change -s $change && > grep -q updated-line shelf.t && > p4 describe -S $change | grep added-file.t && > - test_path_is_missing shelved-change-1.t > + test_path_is_missing shelved-change-1.t && > + p4 revert ... > + ) > +'
Eric Sunshine <sunshine@sunshineco.com> writes: > On Sun, Jan 13, 2019 at 8:58 AM Luke Diamand <luke@diamand.org> wrote: >> Updating a shelved P4 changelist where one or more of the files have >> been moved does not work. Add a test for this. > > Perhaps this message could give more detail about the actual problem > than the generic "does not work" which provides no useful information. > >> Signed-off-by: Luke Diamand <luke@diamand.org> >> --- >> diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh >> @@ -500,6 +500,12 @@ test_expect_success 'submit --shelve' ' >> +last_shelve() { >> + change=$(p4 -G changes -s shelved -m 1 //depot/... | \ >> + marshal_dump change) >> + echo $change >> +} > > A simpler definition for this function would be: > > last_shelve () { > p4 -G changes -s shelved -m 1 //depot/... | marshal_dump change > } Indeed, and it will work better even when the output from marshal_dump has $IFS and other traits that do not survive "echo $change" intact.
diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh index 2325599ee6..08dc8d2caf 100755 --- a/t/t9807-git-p4-submit.sh +++ b/t/t9807-git-p4-submit.sh @@ -500,6 +500,12 @@ test_expect_success 'submit --shelve' ' ) ' +last_shelve() { + change=$(p4 -G changes -s shelved -m 1 //depot/... | \ + marshal_dump change) + echo $change +} + make_shelved_cl() { test_commit "$1" >/dev/null && git p4 submit --origin HEAD^ --shelve >/dev/null && @@ -533,12 +539,53 @@ test_expect_success 'submit --update-shelve' ' ) && ( cd "$cli" && - change=$(p4 -G changes -s shelved -m 1 //depot/... | \ - marshal_dump change) && + change=$(last_shelve) && p4 unshelve -c $change -s $change && grep -q updated-line shelf.t && p4 describe -S $change | grep added-file.t && - test_path_is_missing shelved-change-1.t + test_path_is_missing shelved-change-1.t && + p4 revert ... + ) +' + +test_expect_failure 'update a shelve involving a moved file' ' + test_when_finished cleanup_git && + ( + cd "$cli" && + : >file_to_move && + p4 add file_to_move && + p4 submit -d "change1" && + p4 edit file_to_move && + echo change >>file_to_move && + p4 submit -d "change2" && + p4 opened + ) && + git p4 clone --dest="$git" //depot && + ( + cd "$git" && + git config git-p4.skipSubmitEdit true && + mkdir moved && + git mv file_to_move moved/ && + git commit -m "rename a file" && + git p4 submit -M --shelve --origin HEAD^ && + : >new_file && + git add new_file && + git commit --amend && + git show --stat HEAD && + change=$(last_shelve) && + git p4 submit -M --update-shelve $change --commit HEAD + ) && + ( + cd "$cli" && + change=$(last_shelve) && + echo change=$change && + p4 unshelve -s $change && + p4 submit -d "Testing update-shelve" && + test_path_is_file moved/file_to_move && + test_path_is_missing file_to_move && + test_path_is_file new_file && + echo "unshelved and submitted change $change" && + p4 changes moved/file_to_move | grep "Testing update-shelve" ) '
Updating a shelved P4 changelist where one or more of the files have been moved does not work. Add a test for this. Signed-off-by: Luke Diamand <luke@diamand.org> --- t/t9807-git-p4-submit.sh | 53 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-)