Проблема Bitbucket CRLF?
Выпуск:
Bitbucket показывает, что весь файл изменился, хотя я не вижу никаких различий. И в этих файлах нет конфликтов слияния.
Подробности:
Я создал спринт филиала (названный "sprintbranch") и разработчики создали отдельную ветку(под названием "featurebranchX") от спринта филиала. Я начал объединять ветви функций обратно в ветвь sprint, как и когда функции были реализованы. Теперь есть два сценария, в которых я сталкиваюсь с выпуск:
- разработчик создает запрос pull для слияния featurebranch1 в sprintbranch
- Если есть конфликты слияния, разработчик объединяет sprintbranch в featurebranch1 и создает запрос pull для слияния featurebranch1 в sprintbranch.
Оба раза bitbucket показывает, что весь файл изменился. И нет никаких конфликтов слияния.
Когда это происходит, я не могу сделать обзор кода, так как я не знаю, какие конкретные строки были изменены разработчик. Кроме того, я теряю историю в этот момент - оглядываясь назад, я не смогу понять, что было реализовано или объединено в ветку sprint.
Я предполагаю, что проблема заключается в окончаниях строк. Что-то связанное с CRLF. Но когда я совершаю свою работу, я вижу, что соответствующие окончания строк используются автоматически (либо git, либо таким инструментом, как SmartGit)
Как мне решить эту проблему, чтобы она не повторялась?
Обновление:
Я только что узнал, что Я могу добавить строку запроса w=1 в конце url-адреса запроса pull, чтобы игнорировать различия cr lf.
Но эти файлы все еще находятся в фиксации, и когда я снова объединю их, они будут включать эти различия, верно?
1 ответ:
Несмотря на то, что Bitbucket может игнорировать пробелы в diff (используя параметр запроса
w=1), эти изменения все равно будут включены в слияние.Но вы можете настроить git для преобразования всех окончаний строк в LF или CRLF. Ваша команда должна сначала решить, какой вариант будет выбран, а затем установить свойство
textв файле.gitattributesсоответствующим образом, например:* text eol=lfЭта страница справки Github содержит дополнительную информацию. (Эта информация предназначена для git в целом, а не конкретно На GitHub.)
Вам также понадобится опция глобальной конфигурации
git config --global core.autocrlf input(Mac & Linux) илиgit config --global core.autocrlf true(Windows).# Make sure you won't loose your work in progress $ git add . -u $ git commit -m "Saving files before refreshing line endings" # Remove every file from the git index $ git rm --cached -r . # Rewrite the git index $ git reset --hard # Prepare all changed files for commit $ git add . # It is perfectly safe to see a lot of messages here that read # "warning: CRLF will be replaced by LF in file." # And commit. $ git commit -m "Normalize all the line endings"
Comments