Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования.
В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
Перемещение файла — это нормальная практика, если при этом структура проекта становится лучше. Если при этом ещё рефакторинг происходит (разделили класс на 2, вытащили не свойственную ему функциональность и т.д.), то вообще замечательно.
Про форматирование в целом тоже. Если это не война пробелов с табами, а кто-то заметил криво выглядящий код и улучшил форматирование, то молодец.
Если нет, то прописывать в код-стайл как надо писать.
А целом действует принцип — "кто последний, тот и папа". Переименовал метод, теперь его поддерживаешь, все вопросы к тебе.
Здравствуйте, alzt, Вы писали:
A>Здравствуйте, okon, Вы писали:
O>>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
A>Перемещение файла — это нормальная практика, если при этом структура проекта становится лучше. Если при этом ещё рефакторинг происходит (разделили класс на 2, вытащили не свойственную ему функциональность и т.д.), то вообще замечательно.
Возможно, но мне например порой хочется узнать кто же придумал эту чудесную логику, как в хорошем, так и в плохом смысле.
И в итоге бардак что не разобрать и статистика сильно искажается. Особенно когда завлдится какой-нибудь энтузиаст который начниает много перемещать。
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
Никак не боремся. Не видим в этом проблемы.
Все изменения видны в истории системы контроля версий, если что. Вся история изменений легко видна.
Здравствуйте, okon, Вы писали:
O>Возможно, но мне например порой хочется узнать кто же придумал эту чудесную логику, как в хорошем, так и в плохом смысле.
В P4 был замечательный тул Timelapse, который мог очень просто а главное наглядно показать историю изменений, в новомодных говногитах его очень сильно не хватает.
Здравствуйте, okon, Вы писали:
O>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
git log foo/bar.h
Здравствуйте, Skorodum, Вы писали:
S>Здравствуйте, okon, Вы писали:
O>>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ? S>git log foo/bar.h
S>1234: Vasya: Reformat code with clang-format S>4321: Petay: Add functionality xyz
S>В чем проблема? S>Наверное, можно взять версию до форматирования и на ней посмотреть git blame.
petyacore/ppp.cpp
2222 Petya Add file New Functionality and reformat
Потом имеем файл petyacore/ppp.cpp, и понять что он Made in Vasya становится труднее.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, Artem Korneev, Вы писали:
AK>Здравствуйте, okon, Вы писали:
O>>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
AK>Никак не боремся. Не видим в этом проблемы. AK>Все изменения видны в истории системы контроля версий, если что. Вся история изменений легко видна.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>не обычно такая история
O>vasyacore/vvv.cpp O>1111 Vasya Add file New Functionality O>... O>2111 Petya removed file
O>petyacore/ppp.cpp O>2222 Petya Add file New Functionality and reformat
O>Потом имеем файл petyacore/ppp.cpp, и понять что он Made in Vasya становится труднее.
Petya должен был использовать git mv
Здравствуйте, okon, Вы писали:
AK>>Никак не боремся. Не видим в этом проблемы. AK>>Все изменения видны в истории системы контроля версий, если что. Вся история изменений легко видна.
O>Вот тут пример, как такие кейсы
O>http://rsdn.org/forum/job/7612207.1
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, okon, Вы писали:
O>>Возможно, но мне например порой хочется узнать кто же придумал эту чудесную логику, как в хорошем, так и в плохом смысле. CC>В P4 был замечательный тул Timelapse, который мог очень просто а главное наглядно показать историю изменений, в новомодных говногитах его очень сильно не хватает.
Для Visual Studio есть плагин CodeLineage.
Не дотягивает по удобству, но лучше, чем ничего.
Здравствуйте, PM, Вы писали:
PM>Здравствуйте, okon, Вы писали:
AK>>>Никак не боремся. Не видим в этом проблемы. AK>>>Все изменения видны в истории системы контроля версий, если что. Вся история изменений легко видна.
O>>Вот тут пример, как такие кейсы
O>>http://rsdn.org/forum/job/7612207.1
Внимательно смотрел сообщение ? При создании нового файла данная информация пропадает
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, std.denis, Вы писали:
O>>vasyacore/vvv.cpp O>>1111 Vasya Add file New Functionality O>>... O>>2111 Petya removed file
O>>petyacore/ppp.cpp O>>2222 Petya Add file New Functionality and reformat
SD>просто петя – дурак, и ему нужно навалять в курилке объяснить, чтобы он сделал хотя бы mv + reformat одним коммитом, а потом add new functionality
да вроде не дурак и думаю даже знает о этих функциях, поэтому я и написал “метить код”. подобные случаи возникают не однократно сложилось впечатление что это порой делают намеряно, мотив не совсем понятен кроме как иммитация бурной деятельности.
вопрос изначально как это все регулировать, интересно как это решают в других командах без потрясений и боли.
запрещают операции типа remove ? выглядит слишком не эффективно. Угрозой наказания/увольнений "не делай так, а то снег в башка попадет” — тоже как-то деструктивно.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, Skorodum, Вы писали:
S>Здравствуйте, okon, Вы писали:
O>>не обычно такая история
O>>vasyacore/vvv.cpp O>>1111 Vasya Add file New Functionality O>>... O>>2111 Petya removed file
O>>petyacore/ppp.cpp O>>2222 Petya Add file New Functionality and reformat
O>>Потом имеем файл petyacore/ppp.cpp, и понять что он Made in Vasya становится труднее. S>Petya должен был использовать git mv
Это не обязательно, git определяет перемещения по хэшу, и сделали вы "mv" или "git mv"
не важно. Но нужно конечно использовать "git log --follow file"
Z>Это не обязательно, git определяет перемещения по хэшу, и сделали вы "mv" или "git mv" Z>не важно. Но нужно конечно использовать "git log --follow file"
Вот это интересная опция, а с переименованием файла она работает ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, okon, Вы писали:
O>>Возможно, но мне например порой хочется узнать кто же придумал эту чудесную логику, как в хорошем, так и в плохом смысле. CC>В P4 был замечательный тул Timelapse, который мог очень просто а главное наглядно показать историю изменений, в новомодных говногитах его очень сильно не хватает.
Хм, давно не работал с Гитом, но это ж базовый тул любой VCS, неужто нет нормального GUI на базе git blame? А то у нас контора как раз массово переходит с P4 на Гит в след году.... P4 Timelapse за секунды позволяет найти кто написал тот или иной код, рефакторинг и прочие чистки легко проматываются и смотришь на предыдущие версии. https://github.com/JonathanAquino/git-time-lapse-view, хотя бы что-то типа такого я б ожидал в любом нормальном GUI для Гита...
Здравствуйте, okon, Вы писали:
O>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
У меня в команде некоторые разработчики метят код путем переименования переменных в в венгерскую нотацию и вводят много временных переменных типа sTmp. Видя такой код, я сразу знаю, кто это написал
Здравствуйте, okon, Вы писали:
O>вопрос изначально как это все регулировать, интересно как это решают в других командах без потрясений и боли.
Одно логическое действие — один коммит
Все декоративные действия типа форматирования/переименования всегда в отдельные коммиты.
O>вопрос изначально как это все регулировать, интересно как это решают в других командах без потрясений и боли.
а пробовали самый дерзкий метод: сказать "петя, не делай больше так, пожалуйста" ?
иногда это помогает, ведь есть шанс, что товарищ просто не подумал что это кого-то может смущать.
Здравствуйте, okon, Вы писали:
O>Внимательно смотрел сообщение ? При создании нового файла данная информация пропадает
А не надо удалять/создавать — надо перемещать. Если в той же Тортиле потащить файлик правой кнопкой, то он чётко спросит "чего делаем". При git-перемещении вся история продолжается, вне зависимости от того в какой подпапке репозитория был файлик в тот или иной момент времени.
Здравствуйте, Faland, Вы писали:
F>Хм, давно не работал с Гитом, но это ж базовый тул любой VCS, неужто нет нормального GUI на базе git blame? А то у нас контора как раз массово переходит с P4 на Гит в след году.... P4 Timelapse за секунды позволяет найти кто написал тот или иной код, рефакторинг и прочие чистки легко проматываются и смотришь на предыдущие версии.
Гит штука хорошая. Но git blame покажет последнего разработчика. Чтобы посмотреть предыдущего придётся либо умахаться, либо очень хорошо знать гит, либо использовать сторонние тулы. Т.е. все варианты плохие и не подходят для массового использования.
Здравствуйте, okon, Вы писали:
O>2111 Petya removed file O>2222 Petya Add file New Functionality and reformat
Если это один коммит, то оно криво, конечно, но в истории все равно все видно — прыгаем туда, где файл создан и оно показывает, какой файл был удален. Пете на код-ревью объясняем, чтоб пользовался git mv.
Если это два разных коммита, то ситуация более чем странная сама по себе. Если файл спокойно удалили и ничего не поломалось, то зачем этот файл там был нужен? Поэтому я таки предполагаю, что это все-таки один коммит и Пете просто нужно вежливо объяснить, как пользоваться git mv.
Здравствуйте, Anonymous123, Вы писали:
O>>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
A>У меня в команде некоторые разработчики метят код путем переименования переменных в в венгерскую нотацию и вводят много временных переменных типа sTmp. Видя такой код, я сразу знаю, кто это написал
Код ревью на них нет! Ужасно. Хуже всего, если они это делают, когда редактируют часть чужого кода. Тогда получится, что часть переменных в методе нормально названа, а часть на мадьярском.
A>А целом действует принцип — "кто последний, тот и папа". Переименовал метод, теперь его поддерживаешь, все вопросы к тебе.
Программный код проекта — это зона ответственности всех членов команды. Иначе bus-factor очень маленький.
Здравствуйте, okon, Вы писали:
O>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
Про форматирование не понятно. Если проект устоявшийся, в нём есть определённые правила форматирования и с бухты барахты никакого переформатирования существующего кода быть не должно. Перемещать файлы это крупный рефакторинг. Без существенной причины такое тоже делать не положено. Да и вообще рефакторить не положено без надобности. А если надобность есть, то бишь код совсем плохой, то уже всё равно, кто там что писал раньше, скорей всего эта информация не понадобится.
Здравствуйте, okon, Вы писали:
PM>>TortoiseGit показывает изменения для каждой строки кода в файле: https://tortoisegit.org/docs/tortoisegit/tgit-dug-blame.html O>Внимательно смотрел сообщение ? При создании нового файла данная информация пропадает
Это не так. Git использует эвристики для реконструкции перемещений фрагментов кода. Там нужно весь файл перекорёжить, чтобы они сломались.
Здравствуйте, CreatorCray, Вы писали:
O>>Возможно, но мне например порой хочется узнать кто же придумал эту чудесную логику, как в хорошем, так и в плохом смысле. CC>В P4 был замечательный тул Timelapse, который мог очень просто а главное наглядно показать историю изменений, в новомодных говногитах его очень сильно не хватает.
"Show history for selection" в IDEA...
Здравствуйте, okon, Вы писали:
O>Замечаю тенденцию последних лет, разработчики любят перекомичивать сделанное другими путем перемещения файлов или какого-нибудь форматирования. O>В итоге не всегда понятно кто сделал данный функционал, как вы боретесь с этим явлением, запрещаете перемещение, в комментариях пишете автора или иначе ?
Вообще даже поверхностное кодревью спасает от подобной дичи. Для перемещения файлов нужен весомый повод и взвешенное, согласованное решение. И это должно быть как-то отражено в коммите.
А также во время ревью подскажут, что это лучше отделиить от других изменений.
И в общем и целом улучшает уровень владения кодом.
По поводу автора можно просто слать вопросы в общий чатик команды, поддерживающий код. У нас проект старый, автора можно и найти. Иногда и истории тоже И не факт что последний коммиттер лучший кандидат для вопросов.
А точный автор обычно не так интересен. Интересно почему что-то было сделано именно так. И вот это далжно быть описано в коммите или соотв баге. Так что бы средневзятый последователь понял суть.
В общем внедряй. Тем более во всяких гитлабах, гитхабах это просто вопрос силы воли.
CAF>В общем внедряй. Тем более во всяких гитлабах, гитхабах это просто вопрос силы воли.
Да в целом выглядит как годное решение, забыл я это слово “код ревью”。
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>да вроде не дурак и думаю даже знает о этих функциях, поэтому я и написал “метить код”. подобные случаи возникают не однократно сложилось впечатление что это порой делают намеряно, мотив не совсем понятен кроме как иммитация бурной деятельности.
Обходят очередной дурацкий KPI и увеличивают надои зерновых? Если так, то может быть фиксисть надо KPI, а не разрабов, тогда и "метить" перестанут.