Ответ 1
Вы можете сделать это с помощью git filter-branch
. Идея состоит в том, что вы должны изменить кодировку файлов в каждом коммите, переписывая каждую фиксацию по ходу.
Сначала напишите script, который изменяет кодировку каждого файла в репозитории. Это может выглядеть так:
#!/bin/sh
find . -type f -print | while read f; do
mv -i "$f" "$f.recode.$$"
iconv -f iso-8859-1 -t utf-8 < "$f.recode.$$" > "$f"
rm -f "$f.recode.$$"
done
Затем используйте git filter-branch
для запуска этого script снова и снова, один раз для фиксации:
git filter-branch --tree-filter /tmp/recode-all-files HEAD
где /tmp/recode-all-files
- это выше script.
Сразу после того, как репозиторий обновлен с CVS, вы, вероятно, имеете только одну ветвь в git с линейной историей до начала. Если у вас несколько ветвей, вам может понадобиться усилить команду git filter-branch
для редактирования всех коммитов.