Можно ли переписать очень старую историю git для ветки разработки

Я чувствую, что API REST помогает в гораздо большем количестве способов, чем просто предоставление семантики. Поэтому нельзя выбирать стиль RPC только из-за некоторых вызовов, которые, похоже, имеют больше смысла в стиле RPC. Например, google maps api, чтобы найти направления между двумя местами. Выглядит так: http://maps.googleapis.com/maps/api/directions/json?origin=Jakkur&destination=Hebbal

Они могли бы назвать это «findDirections» "(глагол) и рассматривал его как операцию. Скорее они сделали «направление» (существительное) в качестве ресурса и обработали направления поиска как запрос ресурса маршрутов (хотя внутри не могло быть никакого реального ресурса, называемого направлением, и его можно было бы реализовать бизнес-логикой, чтобы найти направления на основе параметров).

0
задан Dawe 18 March 2019 в 14:37
поделиться

1 ответ

Нет. Git - это простая цепочка блоков, в которой каждый блок (коммит) содержит ссылку на идентификатор предыдущего блока. В Git блочные идентификаторы - это просто хэш их содержимого, поэтому, когда вы изменяете содержимое, даже немного, хеш-код меняется, и, следовательно, также меняется и идентификатор. Поскольку родительский идентификатор является частью содержимого блока, вы не можете изменить эти ранние блоки, не изменив также все следующие блоки. Смена родителя означает, что вам нужно сменить ребенка, а значит, вам нужно поменять детей ребенка и т. Д.

Это вполне возможно, но это вызовет большие головные боли у всех, кто работает над веткой функций, основанной на старых коммитах. Это также сломает все ваши теги, которые будут продолжать указывать на исходные коммиты, если вы не удалите и не создадите заново каждый из них, что может сломать любого, кто делал сборки и т. Д., От старых указателей тегов.

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

Единственное исключение из этого правила, если вы можете найти какой-нибудь способ взлома этих оригинальных коммитов, чтобы сгенерировать хеш-коллизий . Это заставит следующие коммиты думать, что они все еще указывают на исходные коммиты. Это было бы нелегко осуществить и почти наверняка нежелательно, поскольку взломанные коммиты выглядели бы как беспорядок, но Git использует SHA-1 , который был взломан , так что это технически можно .

0
ответ дан JDB 18 March 2019 в 14:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: