Skip to content

Conversation

rimrul
Copy link
Member

@rimrul rimrul commented Oct 23, 2015

This is mainly about e740d9e, the other commits are regular upstream commits.

stash--helper: implement "git stash--helper"

This patch implements a new "git stash--helper" builtin plumbing
command that will be used to migrate "git-stash.sh" to C.

We start by implementing only the "--non-patch" option that will
handle the core part of the non-patch stashing.

The other commits are in the pull request, because I based this on upstreams master. I want to introduce the stash--helper in another commit with a commit message simillar to 23b5f18 that contains this patch:

diff --git a/git-stash.sh b/git-stash.sh
index c7c65e2..c0f8b12 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -112,15 +112,9 @@ create_stash () {
    then

        # state of the working tree
-       w_tree=$( (
-           git read-tree --index-output="$TMPindex" -m $i_tree &&
-           GIT_INDEX_FILE="$TMPindex" &&
-           export GIT_INDEX_FILE &&
-           git diff --name-only -z HEAD -- >"$TMP-stagenames" &&
-           git update-index -z --add --remove --stdin <"$TMP-stagenames" &&
-           git write-tree &&
-           rm -f "$TMPindex"
-       ) ) ||
+       w_tree=$(
+       git stash--helper --non-patch $TMPindex $TMP-stagenames $i_tree
+       ) ||
            die "$(gettext "Cannot save the current worktree state")"

    else

@buildhive
Copy link

Git for Windows » git #23 FAILURE
Looks like there's a problem with this pull request
(what's this?)

@rimrul
Copy link
Member Author

rimrul commented Oct 23, 2015

can confirm @buildhive. 48 breakages with t3903
EDIT: buildhive's complaint is about mergeconflicts

@dscho
Copy link
Member

dscho commented Oct 24, 2015

@rimrul it appears your branch is not forked off from Git for Windows' master, but probably from upstream's? We do not follow upstream that closely (yet), but only with released versions.

@rimrul
Copy link
Member Author

rimrul commented Oct 30, 2015

48 breakages with t3903

Apparently t3903 runs into a SEGFAULT... Oh, the joys of C.

@dscho
Copy link
Member

dscho commented Nov 1, 2015

@rimrul why not rebase to Git for Windows' master?

@dscho
Copy link
Member

dscho commented Nov 9, 2015

@rimrul I promise to look at this PR again when it is rebased to master (into which it purports to want to be merged).

@rimrul rimrul force-pushed the make-stash-a-builtin branch from e740d9e to 86a8da0 Compare November 9, 2015 17:37
@rimrul
Copy link
Member Author

rimrul commented Nov 9, 2015

@rimrul why not rebase to Git for Windows' master?

Mainly because I didn't think about the option to cherry pick this onto upstreams master.

@rimrul I promise to look at this PR again when it is rebased to master

Done. Sorry that it took me so long.

Apparently t3903 runs into a SEGFAULT

To be more precise, I get this output:

vagrant@vagrant-ubuntu-trusty-64:/vagrant/t$ echo 1 > file && git add file && echo unrelated >other-file && git add other-file && git commit -m initial && echo 2 > file && git add file && echo 3 > file && git stash                          17:55:12.686601 git.c:348               trace: built-in: git 'add' 'file'
17:55:12.725409 git.c:348               trace: built-in: git 'add' 'other-file'
17:55:12.758359 git.c:348               trace: built-in: git 'commit' '-m' 'initial'
[make-stash-a-builtin 9879adf] initial
 2 files changed, 2 insertions(+)
 create mode 100644 t/file
 create mode 100644 t/other-file
17:55:15.812020 git.c:348               trace: built-in: git 'add' 'file'
17:55:15.844950 git.c:561               trace: exec: 'git-stash'
17:55:15.845231 run-command.c:343       trace: run_command: 'git-stash'
17:55:15.850104 git.c:348               trace: built-in: git 'rev-parse' '--git-dir'
17:55:15.855297 git.c:348               trace: built-in: git 'rev-parse' '--git-path' 'objects'
17:55:15.864640 git.c:348               trace: built-in: git 'rev-parse' '--show-toplevel'
17:55:15.869640 git.c:348               trace: built-in: git 'rev-parse' '--git-path' 'index'
17:55:15.877152 git.c:348               trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
17:55:15.881917 git.c:348               trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
17:55:15.887258 git.c:348               trace: built-in: git 'config' '--get-color' '' 'reset'
17:55:15.892447 git.c:348               trace: built-in: git 'update-index' '-q' '--refresh'
17:55:16.394713 git.c:348               trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
17:55:16.448668 git.c:348               trace: built-in: git 'reflog' 'exists' 'refs/stash'
17:55:16.453418 git.c:348               trace: built-in: git 'update-index' '-q' '--refresh'
17:55:16.785993 git.c:348               trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
17:55:16.830562 git.c:348               trace: built-in: git 'rev-parse' '--verify' 'HEAD'
17:55:16.838658 git.c:348               trace: built-in: git 'rev-list' '--oneline' '-n' '1' 'HEAD' '--'
17:55:16.866326 git.c:348               trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
17:55:16.871338 git.c:348               trace: built-in: git 'write-tree'
17:55:16.965126 git.c:348               trace: built-in: git 'commit-tree' 'f5acef6b2be517c49e5528789cf820d9c16be9a2' '-p' '9879adf5bf6c626d3d526cf8b0d866def4758656'
17:55:16.995261 git.c:348               trace: built-in: git 'stash--helper' '--non-patch' '.git/index.stash.10757' '/vagrant/.git/.git-stash.10757-stagenames' 'f5acef6b2be517c49e5528789cf820d9c16be9a2'
Segmentation fault (core dumped)
Cannot save the current worktree state

I tried to insert a printf("stash helper\n\n"); in the first line builtin/stash--helper.c, but it doesn't print. If I run git stash--helper I get the expected result:

git stash--helper
18:00:18.847398 git.c:348               trace: built-in: git 'stash--helper'
stash helper

fatal: Usage: git stash--helper --non-patch <tmp_indexfile> <tmp_stagefile> <i_tree>

I'm slightly confused. Do I call this wrong in git-stash.sh?

@rimrul
Copy link
Member Author

rimrul commented Nov 17, 2015

I tried to insert a printf("stash helper\n\n"); in the first line builtin/stash--helper.c, but it doesn't print. If I run git stash--helper I get the expected result:
I'm slightly confused. Do I call this wrong in git-stash.sh?

I found that issue. Printing debug messages to stdout and collecting stdout into a shell variable don't mix too well.

@dscho
Copy link
Member

dscho commented Nov 18, 2015

Good point! fprintf(stderr, ...); is your friend. Under certain circumstances, I found it necessary to fflush(stderr), too, usually when there is a segfault just after the print statement: in MinTTY, stderr is funneled through a pipe and is not really synchronous.

stash.c Outdated

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

@rimrul
Copy link
Member Author

rimrul commented Nov 18, 2015

So I'm getting closer, but there are these lines git-stash.sh#L119-L120 that won't work with the run-command API. Trying to run them with system() doesn't succeed either. I might work around this for the first line with the diff API, but I don't see a way to get this second line to work. Except for reopening stdin and directly calling main(). But I'm sure upstream wont accept that. Also this would probably result in the first non spam related permanent ban from the mailing list.

@rimrul
Copy link
Member Author

rimrul commented Nov 19, 2015

Except for reopening stdin and directly calling main().

Reopening stdin and calling run_command() should work too, but the cleanup with dup2() would be non-standard at best.

@rimrul
Copy link
Member Author

rimrul commented Nov 19, 2015

I might work around this for the first line with the diff API

No, this doesn't work either.

@rimrul
Copy link
Member Author

rimrul commented Nov 19, 2015

So I'm getting closer, but there are these lines git-stash.sh#L119-L120 that won't work with the run-command API. Trying to run them with system() doesn't succeed either. I might work around this for the first line with the diff API, but I don't see a way to get this second line to work. Except for reopening stdin and directly calling main(). But I'm sure upstream wont accept that. Also this would probably result in the first non spam related permanent ban from the mailing list.

.

Except for reopening stdin and directly calling main().

Reopening stdin and calling run_command() should work too, but the cleanup with dup2() would be non-standard at best.

.

I might work around this for the first line with the diff API

No, this doesn't work either.

I could probably get this to work with capture_command() and building an argv for git update-index that doesn't involve stdin. This would also get rid of tmp_stagefile.

@rimrul
Copy link
Member Author

rimrul commented Nov 20, 2015

I just f-ed up bigtime. I had it working. Still breaking 3 things in t3903, but working. But I did't commit it before running t3903, a test, that includes stashing all changes and removing the stash... I think you know the result.

@rimrul
Copy link
Member Author

rimrul commented Nov 20, 2015

I just f-ed up bigtime. I had it working. Still breaking 3 things in t3903, but working. But I did't commit it before running t3903, a test, that includes stashing all changes and removing the stash... I think you know the result.

Update: I managed to restore git-stash.sh, builtin/stash--helper.c and stash.h to their state before the accident. I'm pushing this even though it won't compile because I'll still have to recreate stash.c.

We should keep a reference to 86a8da04b7 and 8a20aa83b2, because some of the discussion happened on line comments.

@rimrul rimrul force-pushed the make-stash-a-builtin branch from 86a8da0 to c1cef67 Compare November 20, 2015 18:59
@dscho
Copy link
Member

dscho commented Nov 20, 2015

I'll still have to recreate stash.c.

If you ever staged it (including a stash), it should be found by git fsck --lost-found.

@rimrul
Copy link
Member Author

rimrul commented Nov 21, 2015

I'll still have to recreate stash.c.
If you ever staged it (including a stash), it should be found by git fsck --lost-found.

Sadly neither git fsck --lost-found nor git fsck --no-reflog nor git fsck --unreachable yield a stash that contains this file. Most results are index on-commits, that can't be applied by git stash apply. I roughly know what I did, that made it work though.

@rimrul rimrul force-pushed the make-stash-a-builtin branch from c1cef67 to c9884ae Compare November 21, 2015 17:52
@rimrul
Copy link
Member Author

rimrul commented Nov 21, 2015

I'll still have to recreate stash.c.

I have recreated it, but I think I missed something. It still has 31 breakages in t3903... And I didn't even test the three other tests for stash.

@rimrul rimrul force-pushed the make-stash-a-builtin branch from c9884ae to ff720fa Compare November 21, 2015 18:45
@rimrul
Copy link
Member Author

rimrul commented Nov 21, 2015

I have recreated it, but I think I missed something. It still has 31 breakages in t3903... And I didn't even test the three other tests for stash.

I got them down to two. t3904, t3905 and t3906 pass fine now.

@rimrul
Copy link
Member Author

rimrul commented Nov 24, 2015

I have no clue how I break git stash apply and/or git status for test 52 and git log -g --format="%cd" -1 refs/stash for test 56.

@rimrul rimrul force-pushed the make-stash-a-builtin branch from ff720fa to c282a83 Compare January 13, 2016 21:15
@rimrul
Copy link
Member Author

rimrul commented Jan 15, 2016

I've rebased this onto the current tip of master. I've found the point of failure for t3903.52, but I can't seem to reproduce it outside of t3903. Below is a traced run of t3903.

vagrant@vagrant-ubuntu-trusty-64:/vagrant/t$ GIT_TRACE=1 ./t3903-stash.sh --verbose-only=5[26]
ok 1 - stash some dirty working directory
ok 2 - parents of stash
ok 3 - applying bogus stash does nothing
ok 4 - apply does not need clean working directory
ok 5 - apply does not clobber working directory changes
ok 6 - apply stashed changes
ok 7 - apply stashed changes (including index)
ok 8 - unstashing in a subdirectory
ok 9 - stash drop complains of extra options
ok 10 - drop top stash
ok 11 - drop middle stash
ok 12 - stash pop
ok 13 - stash branch
ok 14 - apply -q is quiet
ok 15 - save -q is quiet
ok 16 - pop -q is quiet
ok 17 - pop -q --index works and is quiet
ok 18 - drop -q is quiet
ok 19 - stash -k
ok 20 - stash --no-keep-index
ok 21 - stash --invalid-option
ok 22 - stash an added file
ok 23 - stash rm then recreate
ok 24 - stash rm and ignore
ok 25 - stash rm and ignore (stage .gitignore)
ok 26 # skip stash file to symlink (missing SYMLINKS)
ok 27 # skip stash file to symlink (stage rm) (missing SYMLINKS)
ok 28 # skip stash file to symlink (full stage) (missing SYMLINKS)
ok 29 - stash symlink to file
ok 30 # skip this must have re-created the symlink (missing SYMLINKS)
ok 31 - unstash must re-create the file
ok 32 - stash symlink to file (stage rm)
ok 33 # skip this must have re-created the symlink (missing SYMLINKS)
ok 34 - unstash must re-create the file
ok 35 - stash symlink to file (full stage)
ok 36 # skip this must have re-created the symlink (missing SYMLINKS)
ok 37 - unstash must re-create the file
not ok 38 - stash directory to file # TODO known breakage
not ok 39 - stash file to directory # TODO known breakage
ok 40 - stash branch - no stashes on stack, stash-like argument
ok 41 - stash branch - stashes on stack, stash-like argument
ok 42 - stash show format defaults to --stat
ok 43 - stash show - stashes on stack, stash-like argument
ok 44 - stash show -p - stashes on stack, stash-like argument
ok 45 - stash show - no stashes on stack, stash-like argument
ok 46 - stash show -p - no stashes on stack, stash-like argument
ok 47 - stash drop - fail early if specified stash is not a stash reference
ok 48 - stash pop - fail early if specified stash is not a stash reference
ok 49 - ref with non-existent reflog
ok 50 - invalid ref of the form stash@{n}, n >= N
ok 51 - stash branch should not drop the stash if the branch exists

expecting success:
        git stash clear &&
        echo 1 >subdir/subfile1 &&
        echo 2 >subdir/subfile2 &&
        git add subdir/subfile1 &&
        git commit -m subdir &&
        (
                cd subdir &&
                echo x >subfile1 &&
                echo x >../file &&
                git status >../expect &&
                git stash &&
                sane_unset GIT_MERGE_VERBOSITY &&
                git stash apply
        ) |
        sed -e 1,2d >actual && # drop "Saved..." and "HEAD is now..."
        test_i18ncmp expect actual

trace: exec: 'git-stash' 'clear'
trace: run_command: 'git-stash' 'clear'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
trace: built-in: git 'update-ref' '-d' 'refs/stash' 'baeaed7e0e8746d0ca3c109ae52a0a49cc2043d6'
trace: built-in: git 'add' 'subdir/subfile1'
trace: built-in: git 'commit' '-m' 'subdir'
[master 307367e] subdir
 Author: A U Thor <author@example.com>
 1 file changed, 1 insertion(+)
 create mode 100644 subdir/subfile1
trace: built-in: git 'status'
trace: exec: 'git-stash'
trace: run_command: 'git-stash'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules'
trace: built-in: git 'reflog' 'exists' 'refs/stash'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules'
trace: built-in: git 'rev-parse' '--verify' 'HEAD'
trace: built-in: git 'rev-list' '--oneline' '-n' '1' 'HEAD' '--'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' '13419d0b4f5b097f61dde4c911de99a154f8286f' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404'
trace: built-in: git 'stash--helper' '--non-patch' '.git/index.stash.29650' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: run_command: 'read-tree' '--index-output=.git/index.stash.29650' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: exec: 'git' 'read-tree' '--index-output=.git/index.stash.29650' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'read-tree' '--index-output=.git/index.stash.29650' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: run_command: 'diff' '--name-only' '-z' 'HEAD' '--'
trace: exec: 'git' 'diff' '--name-only' '-z' 'HEAD' '--'
trace: built-in: git 'diff' '--name-only' '-z' 'HEAD' '--'
trace: run_command: 'update-index' '--add' '--remove' 'file' '--'
trace: exec: 'git' 'update-index' '--add' '--remove' 'file' '--'
trace: built-in: git 'update-index' '--add' '--remove' 'file' '--'
trace: run_command: 'write-tree'
trace: exec: 'git' 'write-tree'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' '952e273ccfa63fb1b47f7463e0deea054576c60e' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404' '-p' '5a272eb2d4d8819f7aed183172ebd3e8999b74c2'
trace: built-in: git 'update-ref' '--create-reflog' '-m' 'WIP on master: 307367e subdir' 'refs/stash' '8f8b5351a83d9d96b32d2dbecccce4bc801f666a'
trace: built-in: git 'reset' '--hard'
trace: exec: 'git-stash' 'apply'
trace: run_command: 'git-stash' 'apply'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'rev-parse' '--no-flags' '--symbolic' '--sq'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
trace: built-in: git 'rev-parse' '--symbolic' '--verify' '--quiet' 'refs/stash@{0}'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash@{0}^2'
trace: built-in: git 'rev-parse' 'refs/stash@{0}' 'refs/stash@{0}^1' 'refs/stash@{0}:' 'refs/stash@{0}^1:' 'refs/stash@{0}^2:'
trace: built-in: git 'rev-parse' '--symbolic-full-name' 'refs/stash'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash@{0}^3'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'write-tree'
trace: built-in: git 'merge-recursive' '13419d0b4f5b097f61dde4c911de99a154f8286f' '--' '13419d0b4f5b097f61dde4c911de99a154f8286f' '952e273ccfa63fb1b47f7463e0deea054576c60e'
trace: built-in: git 'diff-index' '--cached' '--name-only' '--diff-filter=A' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'read-tree' '--reset' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'update-index' '--add' '--stdin'
trace: built-in: git 'status'
--- expect      2016-01-15 19:22:41.868722800 +0000
+++ actual      2016-01-15 19:22:42.548464700 +0000
@@ -4,7 +4,6 @@
   (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   ../file
-       modified:   subfile1

 Untracked files:
   (use "git add <file>..." to include in what will be committed)
not ok 52 - stash apply shows status same as git status (relative to current directory)
#
#               git stash clear &&
#               echo 1 >subdir/subfile1 &&
#               echo 2 >subdir/subfile2 &&
#               git add subdir/subfile1 &&
#               git commit -m subdir &&
#               (
#                       cd subdir &&
#                       echo x >subfile1 &&
#                       echo x >../file &&
#                       git status >../expect &&
#                       git stash &&
#                       sane_unset GIT_MERGE_VERBOSITY &&
#                       git stash apply
#               ) |
#               sed -e 1,2d >actual && # drop "Saved..." and "HEAD is now..."
#               test_i18ncmp expect actual
#

ok 53 - stash where working directory contains "HEAD" file
ok 54 - store called with invalid commit
ok 55 - store updates stash ref and reflog

expecting success:
        git stash clear &&
        echo pig >file &&
        git stash &&
        stamp=$(git log -g --format="%cd" -1 refs/stash) &&
        test_tick &&
        echo cow >file &&
        git stash &&
        git stash apply "stash@{$stamp}" &&
        grep pig file

trace: exec: 'git-stash' 'clear'
trace: run_command: 'git-stash' 'clear'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
trace: exec: 'git-stash'
trace: run_command: 'git-stash'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'reflog' 'exists' 'refs/stash'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'rev-parse' '--verify' 'HEAD'
trace: built-in: git 'rev-list' '--oneline' '-n' '1' 'HEAD' '--'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' 'd4f789cedf61d31fea45a20a8aeeb7f308215739' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404'
trace: built-in: git 'stash--helper' '--non-patch' '.git/index.stash.29998' 'd4f789cedf61d31fea45a20a8aeeb7f308215739'
trace: run_command: 'read-tree' '--index-output=.git/index.stash.29998' '-m' 'd4f789cedf61d31fea45a20a8aeeb7f308215739'
trace: exec: 'git' 'read-tree' '--index-output=.git/index.stash.29998' '-m' 'd4f789cedf61d31fea45a20a8aeeb7f308215739'
trace: built-in: git 'read-tree' '--index-output=.git/index.stash.29998' '-m' 'd4f789cedf61d31fea45a20a8aeeb7f308215739'
trace: run_command: 'diff' '--name-only' '-z' 'HEAD' '--'
trace: exec: 'git' 'diff' '--name-only' '-z' 'HEAD' '--'
trace: built-in: git 'diff' '--name-only' '-z' 'HEAD' '--'
trace: run_command: 'update-index' '--add' '--remove' 'bazzy' '--'
trace: exec: 'git' 'update-index' '--add' '--remove' 'bazzy' '--'
trace: built-in: git 'update-index' '--add' '--remove' 'bazzy' '--'
trace: run_command: 'write-tree'
trace: exec: 'git' 'write-tree'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' 'd4f789cedf61d31fea45a20a8aeeb7f308215739' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404' '-p' 'e5f0c4dba2a136e602ccd9e0728b630ddb4bec6f'
trace: built-in: git 'update-ref' '--create-reflog' '-m' 'WIP on master: 307367e subdir' 'refs/stash' 'f7a049d0b388a9dc92adada4e0f83e8fc9497671'
Saved working directory and index state WIP on master: 307367e subdir
trace: built-in: git 'reset' '--hard'
HEAD is now at 307367e subdir
trace: built-in: git 'log' '-g' '--format=%cd' '-1' 'refs/stash'
trace: exec: 'git-stash'
trace: run_command: 'git-stash'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules'
trace: built-in: git 'reflog' 'exists' 'refs/stash'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules'
trace: built-in: git 'rev-parse' '--verify' 'HEAD'
trace: built-in: git 'rev-list' '--oneline' '-n' '1' 'HEAD' '--'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' '13419d0b4f5b097f61dde4c911de99a154f8286f' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404'
trace: built-in: git 'stash--helper' '--non-patch' '.git/index.stash.30045' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: run_command: 'read-tree' '--index-output=.git/index.stash.30045' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: exec: 'git' 'read-tree' '--index-output=.git/index.stash.30045' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'read-tree' '--index-output=.git/index.stash.30045' '-m' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: run_command: 'diff' '--name-only' '-z' 'HEAD' '--'
trace: exec: 'git' 'diff' '--name-only' '-z' 'HEAD' '--'
trace: built-in: git 'diff' '--name-only' '-z' 'HEAD' '--'
trace: run_command: 'update-index' '--add' '--remove' 'file' '--'
trace: exec: 'git' 'update-index' '--add' '--remove' 'file' '--'
trace: built-in: git 'update-index' '--add' '--remove' 'file' '--'
trace: run_command: 'write-tree'
trace: exec: 'git' 'write-tree'
trace: built-in: git 'write-tree'
trace: built-in: git 'commit-tree' 'f6a518ff4c4455fd91b5c1fa6459807a82f14226' '-p' '307367ef082bbeb26ff4d37194044be1a75ff404' '-p' '0ddc29bca4322a86999c2a4f30d6f71de9ad8ea9'
trace: built-in: git 'update-ref' '--create-reflog' '-m' 'WIP on master: 307367e subdir' 'refs/stash' '6c23291333c7bbacf40a3d32fc6ea643378e74d5'
Saved working directory and index state WIP on master: 307367e subdir
trace: built-in: git 'reset' '--hard'
HEAD is now at 307367e subdir
trace: exec: 'git-stash' 'apply' 'stash@{Thu Apr 7 15:17:13 2005 -0700}'
trace: run_command: 'git-stash' 'apply' 'stash@{Thu Apr 7 15:17:13 2005 -0700}'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--git-path' 'objects'
trace: built-in: git 'rev-parse' '--is-inside-work-tree'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'rev-parse' '--git-path' 'index'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'rev-parse' '--no-flags' '--symbolic' '--sq' 'stash@{Thu Apr 7 15:17:13 2005 -0700}'
trace: built-in: git 'rev-parse' '--symbolic' '--verify' '--quiet' 'stash@{Thu Apr 7 15:17:13 2005 -0700}'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'stash@{Thu Apr 7 15:17:13 2005 -0700}^2'
trace: built-in: git 'rev-parse' 'stash@{Thu Apr 7 15:17:13 2005 -0700}' 'stash@{Thu Apr 7 15:17:13 2005 -0700}^1' 'stash@{Thu Apr 7 15:17:13 2005 -0700}:' 'stash@{Thu Apr 7 15:17:13 2005 -0700}^1:' 'stash@{Thu Apr 7 15:17:13 2005 -0700}^2:'
trace: built-in: git 'rev-parse' '--symbolic-full-name' 'stash'
trace: built-in: git 'rev-parse' '--verify' '--quiet' 'stash@{Thu Apr 7 15:17:13 2005 -0700}^3'
trace: built-in: git 'update-index' '-q' '--refresh'
trace: built-in: git 'write-tree'
trace: built-in: git 'merge-recursive' '13419d0b4f5b097f61dde4c911de99a154f8286f' '--' '13419d0b4f5b097f61dde4c911de99a154f8286f' 'd4f789cedf61d31fea45a20a8aeeb7f308215739'
Merging Version stash was based on with Stashed changes
Merging:
virtual Version stash was based on
virtual Stashed changes
found 1 common ancestor:
virtual 13419d0b4f5b097f61dde4c911de99a154f8286f
trace: built-in: git 'diff-index' '--cached' '--name-only' '--diff-filter=A' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'read-tree' '--reset' '13419d0b4f5b097f61dde4c911de99a154f8286f'
trace: built-in: git 'update-index' '--add' '--stdin'
trace: built-in: git 'status'
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   bazzy

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        actual
        expect
        expect1
        expect2
        expected
        output
        output.out
        stashlist1
        stashlist2
        subdir/subfile2

not ok 56 - handle stash specification with spaces
#
#               git stash clear &&
#               echo pig >file &&
#               git stash &&
#               stamp=$(git log -g --format="%cd" -1 refs/stash) &&
#               test_tick &&
#               echo cow >file &&
#               git stash &&
#               git stash apply "stash@{$stamp}" &&
#               grep pig file
#

ok 57 - setup stash with index and worktree changes
ok 58 - stash list implies --first-parent -m
ok 59 - stash list --cc shows combined diff
# still have 2 known breakage(s)
# failed 2 among remaining 57 test(s)
1..59

I even tried to reproduce t3903.52 by calling ./t3903-stash.sh --run=-51 -d followed by GIT_TRACE=1 git stash clear && echo 1 >subdir/subfile1 && echo 2 >subdir/subfile2 && git add subdir/subfile1 && git commit -m subdir && ( cd subdir && echo x >subfile1 && echo x >../file && git status && git stash && git stash apply; ). I can't reproduce the issue that way either... Here is the output of my McGyver debug version of t3903.52:

vagrant@vagrant-ubuntu-trusty-64:/vagrant/t$ ./t3903-stash.sh --run=-51 -d
ok 1 - stash some dirty working directory
ok 2 - parents of stash
ok 3 - applying bogus stash does nothing
ok 4 - apply does not need clean working directory
ok 5 - apply does not clobber working directory changes
ok 6 - apply stashed changes
ok 7 - apply stashed changes (including index)
ok 8 - unstashing in a subdirectory
ok 9 - stash drop complains of extra options
ok 10 - drop top stash
ok 11 - drop middle stash
ok 12 - stash pop
ok 13 - stash branch
ok 14 - apply -q is quiet
ok 15 - save -q is quiet
ok 16 - pop -q is quiet
ok 17 - pop -q --index works and is quiet
ok 18 - drop -q is quiet
ok 19 - stash -k
ok 20 - stash --no-keep-index
ok 21 - stash --invalid-option
ok 22 - stash an added file
ok 23 - stash rm then recreate
ok 24 - stash rm and ignore
ok 25 - stash rm and ignore (stage .gitignore)
ok 26 # skip stash file to symlink (missing SYMLINKS)
ok 27 # skip stash file to symlink (stage rm) (missing SYMLINKS)
ok 28 # skip stash file to symlink (full stage) (missing SYMLINKS)
ok 29 - stash symlink to file
ok 30 # skip this must have re-created the symlink (missing SYMLINKS)
ok 31 - unstash must re-create the file
ok 32 - stash symlink to file (stage rm)
ok 33 # skip this must have re-created the symlink (missing SYMLINKS)
ok 34 - unstash must re-create the file
ok 35 - stash symlink to file (full stage)
ok 36 # skip this must have re-created the symlink (missing SYMLINKS)
ok 37 - unstash must re-create the file
not ok 38 - stash directory to file # TODO known breakage
not ok 39 - stash file to directory # TODO known breakage
ok 40 - stash branch - no stashes on stack, stash-like argument
ok 41 - stash branch - stashes on stack, stash-like argument
ok 42 - stash show format defaults to --stat
ok 43 - stash show - stashes on stack, stash-like argument
ok 44 - stash show -p - stashes on stack, stash-like argument
ok 45 - stash show - no stashes on stack, stash-like argument
ok 46 - stash show -p - no stashes on stack, stash-like argument
ok 47 - stash drop - fail early if specified stash is not a stash reference
ok 48 - stash pop - fail early if specified stash is not a stash reference
ok 49 - ref with non-existent reflog
ok 50 - invalid ref of the form stash@{n}, n >= N
ok 51 - stash branch should not drop the stash if the branch exists
ok 52 # skip stash apply shows status same as git status (relative to current directory) (--run)
ok 53 # skip stash where working directory contains "HEAD" file (--run)
ok 54 # skip store called with invalid commit (--run)
ok 55 # skip store updates stash ref and reflog (--run)
ok 56 # skip handle stash specification with spaces (--run)
ok 57 # skip setup stash with index and worktree changes (--run)
ok 58 # skip stash list implies --first-parent -m (--run)
ok 59 # skip stash list --cc shows combined diff (--run)
# still have 2 known breakage(s)
# passed all remaining 57 test(s)
1..59
vagrant@vagrant-ubuntu-trusty-64:/vagrant/t$ GIT_TRACE=1 git stash clear && echo 1 >subdir/subfile1 && echo 2 >subdir/subfile2 && git add subdir/subfile1 && git commit -m subdir && ( cd subdir && echo x >subfile1 && echo x >../file && git status && git stash && git stash apply; )
20:36:47.488772 git.c:562               trace: exec: 'git-stash' 'clear'
20:36:47.488846 run-command.c:343       trace: run_command: 'git-stash' 'clear'
20:36:47.494106 git.c:348               trace: built-in: git 'rev-parse' '--git-dir'
20:36:47.498399 git.c:348               trace: built-in: git 'rev-parse' '--git-path' 'objects'
20:36:47.506734 git.c:348               trace: built-in: git 'rev-parse' '--show-toplevel'
20:36:47.510918 git.c:348               trace: built-in: git 'rev-parse' '--git-path' 'index'
20:36:47.516292 git.c:348               trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
20:36:47.519927 git.c:348               trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
20:36:47.523551 git.c:348               trace: built-in: git 'config' '--get-color' '' 'reset'
20:36:47.525743 git.c:348               trace: built-in: git 'rev-parse' '--verify' '--quiet' 'refs/stash'
20:36:47.534873 git.c:348               trace: built-in: git 'update-ref' '-d' 'refs/stash' '59aa6fcf4ca9a5ee6d1c7f9e3b0cccad7c152f7a'
[make-stash-a-builtin dac0ab3] subdir
 1 file changed, 1 insertion(+)
 create mode 100644 t/subdir/subfile1
On branch make-stash-a-builtin
Your branch is ahead of 'github/make-stash-a-builtin' by 1 commit.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   subfile1

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ../../git-stash--helper
        ../expect
        ../file
        subfile2
        ../../trace3903.txt

no changes added to commit (use "git add" and/or "git commit -a")
Saved working directory and index state WIP on make-stash-a-builtin: dac0ab3 subdir
HEAD is now at dac0ab3 subdir
On branch make-stash-a-builtin
Your branch is ahead of 'github/make-stash-a-builtin' by 1 commit.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   subfile1

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ../../git-stash--helper
        ../expect
        ../file
        subfile2
        ../../trace3903.txt

no changes added to commit (use "git add" and/or "git commit -a")

I have the slight feeling, that one of us is going insane and I'm not sure wether it's me or Git. I'd really appreciate, if someone could have a look at this. Am I missing something obvious? Is my test environment haunted?

@rimrul rimrul force-pushed the make-stash-a-builtin branch from c282a83 to 092fc80 Compare January 15, 2016 22:32
@rimrul
Copy link
Member Author

rimrul commented Jan 15, 2016

I found the issue. I didn't read the documentation for update-index -z properly. All tests ok, now.

@rimrul rimrul force-pushed the make-stash-a-builtin branch from 092fc80 to 1fdcdfc Compare January 15, 2016 22:47
@dscho dscho closed this Apr 4, 2018
dscho pushed a commit to dscho/git that referenced this pull request Jun 3, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Jul 26, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 18, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Sep 16, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Sep 16, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Sep 19, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Sep 22, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Sep 27, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Oct 3, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Oct 4, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Oct 19, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Nov 23, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Nov 23, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Nov 30, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Nov 30, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Dec 6, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Dec 12, 2022
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Jan 23, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Mar 17, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request May 20, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Jul 11, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 8, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 9, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 9, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 11, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 16, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 21, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
dscho pushed a commit to dscho/git that referenced this pull request Aug 23, 2023
…s remove buggy repos

When running 'scalar reconfigure -a', such as at install time, Scalar
has warning messages about the repository missing (or not containing a
.git directory). Failures can also happen while trying to modify the
repository-local config for that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants