2012-05-16 6 views
13

Редактировать: git не испортит кодировку символов. Это все еще здесь, чтобы делиться знаниями и избегать других, совершающих ту же ошибку.Что может заставить git испортить кодировку символов?


Контекст: Мое предприятие использует репозиторий SVN. Я использую git-svn в качестве клиента для взаимодействия с этим репозиторием. Все текстовые файлы в проекте (и должны быть) закодированы с использованием кодировки по умолчанию Windows (cp -....). Я использую git-расширения, а иногда и командную строку для пилота git.

Что я сделал: В течение последних 3 дней я работал над новой функцией, и я сделал ряд локальных коммитов. Наконец я раздавил все эти коммиты в один, используя интерактивную rebase, затем я использовал git svn dcommit, чтобы выталкивать все в репозиторий svn в одном коммите.

Что случилось затем: Колледж сказал мне, что все акценты были испорчены в файлах, которые я изменил, и в новых файлах после моего фиксации. Я уже делал текстовые файлы с акцентами в том же репозитории с моей установкой git + svn раньше, и я впервые сталкиваюсь с этой проблемой.

Мои исследования: Я сделал следующие вещи, чтобы исследовать: открыли файлы с помощью блокнота ++, и попробовали большинство текущих кодировки (включая окно по умолчанию и UTF-8), чтобы просмотреть их: ни один из них не может отобразить акценты правильно, и разные акценты всегда оказываются одной и той же последовательностью странных глифов.

Временное решение: Я быстро создал ретрансляцию с расширением git и «dcommitted».

Вопрос: Мой репозиторий предприятия СВН в порядке, но теперь у меня есть две следующие проблемы решить:

  1. Понимание того, что случилось с персонажами с акцентами
  2. Получить свою работу с SVN (если возможно, без проверки вручную всех персонажей с акцентами)

Может ли кто-нибудь дать некоторые подсказки (я довольно новичок в git)?

+1

ли вы имеете в виду, что содержание ваших текстовых файлов был изменен, а не пути? (Я спрашиваю, потому что, поскольку я знаю, что git-svn работает с файлами, подобными массиву байтов). Какую версию git-svn вы используете? –

+0

Да, это содержимое файлов, которые были изменены во время операции, а не пути. Я обновляюсь, как только появляется новая версия, но сейчас я не работаю. Я расскажу вам точные номера версий git и git-расширений, как только смогу –

+0

Когда git-svn dcommits изменения в репозитории делает следующее: –

ответ

15

А теперь давайте покажем болезненную истину (болезненную для моего эго, а не для пользователей git): Я действительно возился с акцентами, а не git.

я мог бы просто убрал вопрос, давайте ошибочно думать, что мерзавец может испортить с акцентом, но учитывая количество upvotes, я думаю, чем многие люди делают ту же ошибку, что я сделал, так что у меня есть чтобы ответить на мой вопрос, чтобы установить правду, и, возможно, помочь людям в одном и том же случае:

  1. Git не касается персонажей, кроме разрывов строк.
  2. Я сломал акценты до, совершив, и я не заметил его, потому что я не уделял достаточного внимания. Для этого я редактировал некоторые файлы с помощью eclipse.Eclipse не распознает кодировку, и все акценты заменяются чередой байтовой последовательности при сохранении. Это все.

Еще раз спасибо Dmitry Pavlenko за то, что вы указали, как исследовать эту проблему.

+1 к «мерзавец reflog» фиксируя

Счастливый акцент =)

+0

К сожалению, Eclipse использует разные значения по умолчанию для подключения к Linux и Windows. Только это вызвало у меня больше неприятностей, чем что-либо еще. –