Вот скрипт, который я хочу запустить, используя git filter-branch
:
#!/bin/bash
if test -e src/unlagged.cpp; then
more +34 src/unlagged.cpp | cat ~/newlic.cpp.txt - > /tmp/unlagged.cpp
cp /tmp/unlagged.cpp src/unlagged.cpp
fi
if test -e src/unlagged.h; then
more +34 src/unlagged.h | cat ~/newlic.h.txt - > /tmp/unlagged.h
cp /tmp/unlagged.h src/unlagged.h
fi
Довольно просто.Он берет все после первых 34 строк src/unlagged.cpp
и src/unlagged.h
, объединяет его с содержимым текстового файла, затем записывает его во временный файл, который затем копируется поверх файла, который я хотел изменить.Это прекрасно работает, пока я просто запускаю его в своем исходном дереве, так как вывод src/unlagged.cpp
выглядит так:
(newlic.cpp.txt)
(everything passed line 34 of src/unlagged.cpp)
Однако, когда я запускаю git filter-branch '/path/to/script.sh' -- --all
, файлы изменяются таким образом...
(newlic.cpp.txt)
::::::::::::::
src/unlagged.cpp
::::::::::::::
(entire src/unlagged.cpp)
Откуда взялись эти двоеточия и название файла?Почему он на самом деле не обрезается src/unlagged.cpp
?Я попробовал скрипт с #!/bin/sh
и получил тот же результат.Кстати, я использую git 1.7.7.3.