Я использую мерзавца (с мерзавцем-svn) на Linux, и коллега использует svn на окнах.
Так много раз мерзавец сообщает о пробельных проблемах. На самом деле это не удается фиксировать линейную историю из-за этих проблем и создает конфликты слияния.
Что самый простой путь состоит в том, чтобы настроить svn/git и мерзавца-svn на окнах и Linux так, чтобы были теперь пробельные проблемы?
Следующее является конфликтом слияния, о котором сообщают в линейной истории на ведущем устройстве:
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".
Как я решаю пробельные проблемы?
Исправление ошибок пробелов
Добавьте это в .gitconfig
[core]
whitespace=nowarn
git rebase теперь должен работать. (При желании вы можете добавить некоторые из fix, -indent-with-non-tab, trailing-space
к этому, чтобы git исправлял все пробелы при каждой фиксации. Хорошая ли это идея, зависит от правил вашего проекта и команда.)
Исправление ошибок eol
[core]
autocrlf = true
в вашем .gitconfig
. Это заставит каждый текстовый файл иметь окончание строки окна. svn
по умолчанию игнорирует окончания строк, и если ваши текстовые редакторы в Windows работают нормально, вы можете оставить это так. В противном случае добавьте этот файл в конфигурацию svn (при желании изменив native
на CRLF
), чтобы обеспечить согласованность окончаний строк CRLF.
Установите autocrlf = input
и измените native
на LF
, чтобы строки linux всегда заканчивались последовательно.