Как я могу сделать 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

В зависимости от ОС и терминала вы не можете ввести некоторые символы. Большую часть времени вы можете просто набрать ? в первом паттерне. Сценарии предполагают, что файл / каталог виден в текущей ветви извлечения.

Другие вопросы по тегам