Как программно добавить чанки в репозиторий Git? - PullRequest
2 голосов
/ 19 февраля 2012

Я знаю, что у меня есть git add -p, чтобы вручную выбрать, какие куски добавить в индекс. Однако я ищу способ использования API-интерфейса Git CLI для программного добавления определенных фрагментов.

Возможно ли это с CLI или мне нужны привязки API для C #, который я использую?

1 Ответ

3 голосов
/ 20 февраля 2012

Я пошел и посмотрел, как работает git add -p.Вы даже не хотите знать.

По сути, он анализирует вывод git diff (на самом деле git diff-files -p) и обрабатывает различия вручную.Он показывает вам кусок, если вы хотите, он добавляет его к запущенному diff и в конечном итоге запускает git apply --cached с сгенерированным diff.

Я настоятельно рекомендую использовать любой доступный вам API, вместо того, чтобы пытатьсяубедите сценарий манипулирования патчем на 1600 строк сделать то, что вам нужно.

Известные части включают область вокруг @ hunk = coalesce_overlapping_hunks (@hunk) , где он только что завершил обработку цикла вопросов для всехханки, и вот-вот сожмем их в diff для вас, и около my% patch_modes = ... , где описано все взаимодействие с реальными инструментами git;вы можете видеть, как он построен только на командах, которые я показал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...