git rebase -i --exec and changing directory
- From
- Ondrej Mosnáček <omosnacek@gmail.com>
- Date
- May 19, 2018, 16:38 UTC
- Message-ID
- <CAAUqJDu_3DTyd1cFKaNRKOzo3AHosfxP1jjWpa=HGtyAyitTeA@mail.gmail.com>
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)' baseIs 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