Как я могу сделать git cvsimport со специальными символами в именах файлов?
У нас есть около 100 репозиториев CVS, которые мы хотели бы конвертировать в git. Мы пытались использовать git cvsimport
который отлично работает
Но у нас есть файлы со специальными символами в имени файла. Специальные символы заканчиваются как непечатаемые символы в имени файла в новом репозитории git.
Клиенты CVS и сервер CVS работают на Windows. Клиенты Windows используют набор символов cp1252 для всех файлов. git cvsimport
вызывается с помощью Cygwin, так как он не доступен для Windows.
Любые идеи, чтобы получить правильные имена файлов в git после запуска git cvsimport
?
1 ответ
В итоге мы написали два скрипта для исправления имен файлов и каталогов во всех коммитах.
Для файлов:
#!/bin/bash
echo "$1 --> $2"
cmd="if [ -f '$1' ]
then
mv '$1' '$2'
fi"
git filter-branch --tree-filter "$cmd" --force -- --all
Для каталогов:
#!/bin/bash
echo "$1 --> $2"
cmd="if [ -d '$1' ]
then
mv '$1' '$2'
fi"
git filter-branch --tree-filter "$cmd" --force -- --all
В зависимости от ОС и терминала вы не можете ввести некоторые символы. Большую часть времени вы можете просто набрать ?
в первом паттерне. Сценарии предполагают, что файл / каталог виден в текущей ветви извлечения.