399144f21c
It's stupid. We'd want to rename directories too, but this doesn't do that yet - easy enough to do per se, we just need to carefully list all the pathnames that got moved (and remember to ignore the files that weren't tracked but are in the subdirectory that got moved). Doing the directory case will require a bit more scripting.. Something like oldfiles=($(git-ls-files | grep '^$src')) newfiles=($(git-ls-files | sed ':^$src: s:^$src:$dst:')) mv $src $dst && git-update-cache --add --remove -- "${oldfiles[@]}" "${newfiles[@]}" might do it, except it needs to be done right, and carefully. Methinks perl is probably better at this. Hint hint..
8 lines
244 B
Bash
Executable File
8 lines
244 B
Bash
Executable File
#!/bin/sh
|
|
|
|
. git-sh-setup-script || die "Not a git archive"
|
|
|
|
[ -f "$1" ] || [ -h "$1" ] || die "git rename: bad source"
|
|
[ -e "$2" ] && die "git rename: destination already exists"
|
|
mv -- "$1" "$2" && git-update-cache --add --remove -- "$1" "$2"
|