понедельник, 7 января 2019 г.

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

как программист осторожный, я следую правилу: прежде, чем что-то закоммитить, я просматриваю все сделанные изменения. обычно я делаю это средствами Tortoice Git. но однажды столкнулся с ситуацией, когда это оказалось невозможно. Вот моя история:

я столкнулся с ситуацией:  изменил пространство имен для повсеместно используемого класса
в результате , помимо пары прочих изменений, в около 150 файлах строка  "namespace kaspihelp.Interfaces.DependencyInjection" была заменена на "using kaspi.CommonUtilities.DependencyInjection;"
вручную просмотреть изменения в каждом файле перед коммитом с помощью tortoice git - нереально, да и недостойное программиста занятие.
нашел такой выход:
1)  выполняем в консоли команду
git diff --text --minimal >c:\tmp\_gitoutput.txt

в аутпуте-файле - информация обо всех изменениях. собственно, строки с изменениями начинаются с единичных символов "+" или "-"

грохаем такие строки, много раз повторяющиеся (реплейсим чем-нибудь)
смотрим через поиск по регуляркам в notepad++ "^\-[^-]" и "^\+[^+]" оставшиеся изменения - таким образом проходимся по всем прочим изменениям

UPD: написал код, формирующий список файлов, заслуживающих внимания. не судите строго. мож кому пригодится

Комментариев нет:

Отправить комментарий