git svn windows linux проблемы с пробелами - PullRequest
5 голосов
/ 24 февраля 2010

Я использую git (с git-svn) в Linux, а коллега использует svn в Windows.

Очень часто git сообщает о проблемах с пробелами.Фактически из-за этих проблем он не может зафиксировать линейную историю и создает конфликты слияния.

Какой самый простой способ настроить svn / git и git-svn в Windows и Linux, чтобы теперь возникали проблемы с пробелами?

Ниже приведен зарегистрированный конфликт слияния в линейной истории на master:

error: patch failed: frontend/templates/frontend/base.html:38
error: frontend/templates/frontend/base.html: patch does not apply
error: patch failed: frontend/templates/frontend/footer.html:1
error: frontend/templates/frontend/footer.html: patch does not apply
error: patch failed: frontend/templates/frontend/index.html:1
error: frontend/templates/frontend/index.html: patch does not apply
Using index info to reconstruct a base tree...
<stdin>:15: trailing whitespace.

<stdin>:20: trailing whitespace.
          <a href="{% url frontend_index %}">
<stdin>:22: trailing whitespace.
          </a>
<stdin>:24: trailing whitespace.
        <span class="companyname">
<stdin>:25: trailing whitespace.
          <a href="{% url frontend_index %}">
warning: squelched 74 whitespace errors
warning: 79 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging frontend/templates/frontend/base.html
CONFLICT (content): Merge conflict in frontend/templates/frontend/base.html
Auto-merging frontend/templates/frontend/index.html
CONFLICT (content): Merge conflict in frontend/templates/frontend/index.html
Failed to merge in the changes.
Patch failed at 0001 template changes

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

Как мне решить проблемы с пробелами?

1 Ответ

11 голосов
/ 24 февраля 2010

Исправление ошибок пробелов

Добавить к .gitconfig

[core]
  whitespace=nowarn

git rebase теперь должен работать. (Вы можете при желании добавить к этому fix,-indent-with-non-tab,trailing-space, чтобы git исправлял все пробелы при каждом коммите. Хорошая ли это идея, зависит от правил вашего проекта и команды.)

Исправление ошибок eol

[core]
  autocrlf = true

в вашем .gitconfig. Это заставит каждый текстовый файл иметь оконные строки. svn по умолчанию игнорирует окончания строк, и если ваши текстовые редакторы на окнах нормальны, вы можете оставить это так. В противном случае, добавьте этот файл в конфигурацию svn (при желании изменив native на CRLF), обеспечив согласованное завершение строк CRLF.

Установите autocrlf = input и измените native на LF для последовательных окончаний линий linux на всем протяжении.

...