Проблема Bitbucket CRLF?



Выпуск:
Bitbucket показывает, что весь файл изменился, хотя я не вижу никаких различий. И в этих файлах нет конфликтов слияния.



Подробности:
Я создал спринт филиала (названный "sprintbranch") и разработчики создали отдельную ветку(под названием "featurebranchX") от спринта филиала. Я начал объединять ветви функций обратно в ветвь sprint, как и когда функции были реализованы. Теперь есть два сценария, в которых я сталкиваюсь с выпуск:




  1. разработчик создает запрос pull для слияния featurebranch1 в sprintbranch

  2. Если есть конфликты слияния, разработчик объединяет sprintbranch в featurebranch1 и создает запрос pull для слияния featurebranch1 в sprintbranch.


Оба раза bitbucket показывает, что весь файл изменился. И нет никаких конфликтов слияния.



Когда это происходит, я не могу сделать обзор кода, так как я не знаю, какие конкретные строки были изменены разработчик. Кроме того, я теряю историю в этот момент - оглядываясь назад, я не смогу понять, что было реализовано или объединено в ветку sprint.



Я предполагаю, что проблема заключается в окончаниях строк. Что-то связанное с CRLF. Но когда я совершаю свою работу, я вижу, что соответствующие окончания строк используются автоматически (либо git, либо таким инструментом, как SmartGit)



Как мне решить эту проблему, чтобы она не повторялась?



Обновление:



Я только что узнал, что Я могу добавить строку запроса w=1 в конце url-адреса запроса pull, чтобы игнорировать различия cr lf.



Но эти файлы все еще находятся в фиксации, и когда я снова объединю их, они будут включать эти различия, верно?

843   1  

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"

Более подробная информация доступна в статье Github.

Comments

    Ничего не найдено.