Редактировать: git не испортит кодировку символов. Это все еще здесь, чтобы делиться знаниями и избегать других, совершающих ту же ошибку.Что может заставить git испортить кодировку символов?
Контекст: Мое предприятие использует репозиторий SVN. Я использую git-svn в качестве клиента для взаимодействия с этим репозиторием. Все текстовые файлы в проекте (и должны быть) закодированы с использованием кодировки по умолчанию Windows (cp -....). Я использую git-расширения, а иногда и командную строку для пилота git.
Что я сделал: В течение последних 3 дней я работал над новой функцией, и я сделал ряд локальных коммитов. Наконец я раздавил все эти коммиты в один, используя интерактивную rebase, затем я использовал git svn dcommit, чтобы выталкивать все в репозиторий svn в одном коммите.
Что случилось затем: Колледж сказал мне, что все акценты были испорчены в файлах, которые я изменил, и в новых файлах после моего фиксации. Я уже делал текстовые файлы с акцентами в том же репозитории с моей установкой git + svn раньше, и я впервые сталкиваюсь с этой проблемой.
Мои исследования: Я сделал следующие вещи, чтобы исследовать: открыли файлы с помощью блокнота ++, и попробовали большинство текущих кодировки (включая окно по умолчанию и UTF-8), чтобы просмотреть их: ни один из них не может отобразить акценты правильно, и разные акценты всегда оказываются одной и той же последовательностью странных глифов.
Временное решение: Я быстро создал ретрансляцию с расширением git и «dcommitted».
Вопрос: Мой репозиторий предприятия СВН в порядке, но теперь у меня есть две следующие проблемы решить:
- Понимание того, что случилось с персонажами с акцентами
- Получить свою работу с SVN (если возможно, без проверки вручную всех персонажей с акцентами)
Может ли кто-нибудь дать некоторые подсказки (я довольно новичок в git)?
ли вы имеете в виду, что содержание ваших текстовых файлов был изменен, а не пути? (Я спрашиваю, потому что, поскольку я знаю, что git-svn работает с файлами, подобными массиву байтов). Какую версию git-svn вы используете? –
Да, это содержимое файлов, которые были изменены во время операции, а не пути. Я обновляюсь, как только появляется новая версия, но сейчас я не работаю. Я расскажу вам точные номера версий git и git-расширений, как только смогу –
Когда git-svn dcommits изменения в репозитории делает следующее: –