LINUX.ORG.RU

git и изменение стиля форматирования проекта на С

 , ,


0

1

В основном проекте решили начать переформатирование кода.

merge дает коллизии по несколько сотен строк :(

При том, что «diff -ubwB» говорит о незначительных изменениях.

Может есть способы немного облегчить/автоматизировать этот процесс ?

★★★★★

Так ты же просто форматирование изменил, форсированно мержи и всё. Ну или ты реально когда форматировал накосячил где

LINUX-ORG-RU ★★★★★
()

Разве что clang-format(потом вручную добить что не понравится или найти гуру настройки). git, емнип, всегда построчно мержит

DllMain
()

Может есть способы немного облегчить/автоматизировать этот процесс ?

использовать indent/astyle для форматирования и конфиг для них хранить в дереве исходником, на манер .gitignore

ananas ★★★★★
()

Я лишь приплюсодинюсь (+1) к варианту с astyle, поистине великая мощная штука. Странно что в проекте пытаетесь мержиться с кодом разного форматирования

Посоветовали git merge -X ignore-space-change nasty-branch, но любопытно, неужели это не нарушит принцип однозначности, не будет проблем в дальнейшем от таких фокусов?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

этж не только отступы, может каждый аргумент на новой стоке с запятой перед аргументом, например.

но, да, если там вопрос только форматирования кода - смело мержить и всё.

deep-purple ★★★★★
()
Ответ на: комментарий от vel

не соглашусь - смена формптирования - это тлже изменение файла и доджно попасть в историю полностью.

deep-purple ★★★★★
()
Ответ на: комментарий от PPP328

не форматился, а валидировался на правильное форматирование и не давал ни закоммитить ни запушить пока криворучка не исправит начертание иероглифов!

deep-purple ★★★★★
()
Ответ на: комментарий от PPP328

Когда кто-то приходит туда, где уже есть определённый кодинг стайл — самое то бить его по рукам таким вот способом через гит хуки.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Если новичок на испытательном будет 4 часа долбаться с bamboo, потому что его код авторежектится потому что у него запятая не на той строчке - то он просто соберет манатки и пойдет в другую компанию. Automate it. Пусть хук сам конвертит код, он от этого не сломается, зато сэкономит всем нервы.

PPP328 ★★★★★
()
Ответ на: комментарий от deep-purple

IDE не запрещает самому расставлять пробелы\переносы. Оно просто может что-то само отформатить если например после открытия { нажать enter. Если человеку нужно вручную запускать реформаттинг всего кода в IDE то чем это отличается от реформаттинга при web-hook?

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

просто может что-то само отформатить если например после открытия { нажать enter

Ты в каком году застрял?

вручную запускать реформаттинг

Это просто хоткей пока ты пишешь код. Либо, без выделения, весь файл, либо только выделенное. Полный формат: отступы, скобки, выравнивания, запятые, так, как настроено и еще куча пресетов.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Но зачем если можно писать как тебе удобно, а хук сам отформатит при помещении в хранилище. Простой пример - удобно по-особенному отформатировать перечисление каких-то условий пока пишешь код ниже. А если человеку удобнее использовать не вашу супер-навороченную IDE, а какую-то свою, потому что у него например нет денег на стописоттыщмильонов за какую-нибудь Microsoft Adobe Visual RAD XE IDE и он пишет код в том к чему привык? Зачем искусственно ограничивать человека? Зачем заставлять использовать строго те инструменты, которые используете вы? Чем больше свобод у разработчика - тем больше ему нравится тут работать.

Простой пример - у нас своя система сборки для монорепа для интеграции с bamboo. В репозитории есть прописанные файлы настроек для интеграции с IDE QtCreator. Если кто-то хочет использовать свою IDE - никто не запрещает, можно запускать билд и из консоли (одна команда). Если IDE-хотелка умеет по кнопке build запускать скрипт вместо make - то вообще welcome, пиши в чем хочешь. Тем более, что на удаленном узле иногда вообще нет gui и прихоится что-то править и коммитить на лету - nano, vi, vim, emacs, что хочешь - то используй.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

-- Бро, у тебя там в 15823 строке переменная не занулена — исправь.

-- Что? У меня там вообще объявление метода.

-- Какого нахрен метода?

-- Ну вот — этого.

-- А ты... Стой. Эт чо ваще такое? Чо эт за форматирование? Где та функция?

deep-purple ★★★★★
()
Ответ на: комментарий от PPP328

Но зачем если можно писать как тебе удобно, а хук сам отформатит при помещении в хранилище

Потом править всё равно придётся(своё или чужое), так что лучше сразу приучить

DllMain
()
Ответ на: комментарий от DllMain

зависит от того где этот хук висит, если уже на сервере, то да - новый коммит или схлопывание с приехавшим.

вот потому на сервере только валидатор должен висеть, чтобы говно всякое режектить.

deep-purple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.