Hi Philip, 2018-05-27 14:28 GMT+02:00 Philip Oakley <philipoakley@xxxxxxx>: > You may need to give a bit more background of things that seem obvious to > you. > So where is the src directory you are cd'ing to relative to the > directory/repository you are creating? It is located in the top-level directory of the working tree (in the same directory that .git is in). >From git-rebase(1): The "exec" command launches the command in a shell (the one specified in $SHELL, or the default shell if $SHELL is not set), so you can use shell features (like "cd", ">", ";" ...). The command is run from the root of the working tree. So I need to run 'cd src' if I want to run a command in there (regardless of the working directory of the git rebase command itself). > What is [the name of] the directory you are currently in, etc. ? I don't think that is relevant here. FWIW, when verifying the problem I ran the reproducer from my original message in a directory whose path did not contain any spaces or special characters. Did you try to run the reproducing commands I posted? Did you get a different result? You should see the following in the output of 'cd dir && git status': [...] Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: a deleted: b deleted: dir/x deleted: reproduce.sh Untracked files: (use "git add <file>..." to include in what will be committed) x [...] When I drop the 'cd dir && ' from before 'git status', the output is as expected: You are currently editing a commit while rebasing branch 'master' on '19765db'. (use "git commit --amend" to amend the current commit) (use "git rebase --continue" once you are satisfied with your changes) nothing to commit, working tree clean > > Philip > -- > > From: "Ondrej Mosnáček" <omosnacek@xxxxxxxxx> > Bump? Has anyone had time to look at this? > > 2018-05-19 18:38 GMT+02:00 Ondrej Mosnáček <omosnacek@xxxxxxxxx>: >> >> Hello, >> >> I am trying to run a script to edit multiple commits using 'git rebase >> -i --exec ...' and I ran into a strange behavior when I run 'cd' >> inside the --exec command and subsequently run a git command. For >> example, if the command is 'cd src && git status', then git status >> reports as if all files in the repository are deleted. >> >> Example command sequence to reproduce the problem: >> >> # Setup: >> touch a >> mkdir dir >> touch dir/x >> >> git init . >> git add --all >> git commit -m commit1 >> git tag base >> touch b >> git add --all >> git commit -m commit2 >> >> # Here we go: >> git rebase -i --exec 'cd dir && git status' base >> >> # Spawning a sub-shell doesn't help: >> git rebase -i --exec '(cd dir && git status)' base >> >> Is this expected behavior or did I found a bug? Is there any >> workaround, other than cd'ing to the toplevel directory every time I >> want to run a git command when I am inside a subdirectory? >> >> $ git --version >> git version 2.17.0 >> >> Thanks, >> >> Ondrej Mosnacek > >