Я пошел и посмотрел, как работает git add -p
. Вы даже не хотите знать.
Фактически, он анализирует вывод git diff
(фактически git diff-files -p
) и обрабатывает различия вручную. Он показывает вам кусок, если вы этого хотите, он добавляет это к его запуску diff и в конечном итоге запускает git apply --cached
с созданным diff.
Я настоятельно рекомендую использовать любой доступный вам API, пытаясь убедить этот скрипт для работы с строкой в 1600 строк, чтобы делать то, что вы хотите.
Известные части включают область вокруг @hunk = coalesce_overlapping_hunks(@hunk), где это только что сделали обработку петли вопрос для всех скряга, и вот-вот сжать их в дифф для вас, и вокруг my %patch_modes = ... где все взаимодействие с фактическими git
инструментов описывается; вы можете увидеть, как она построена только на тех командах, которые я показал выше.
Почему вы пытаетесь использовать CLI, когда можете использовать привязки? – svick
Я действительно ищу LibGit2Sharp, но я хорошо знаю API CLI, и до сих пор мне это проще :) – Tower
На странице руководства для 'git-add' говорится, что' -p' позволяет ** интерактивно ** выбирать который куски добавить или нет. Это слово делает его человеком, а не сценарием. –