2012-02-19 4 views
2

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

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

+0

Почему вы пытаетесь использовать CLI, когда можете использовать привязки? – svick

+0

Я действительно ищу LibGit2Sharp, но я хорошо знаю API CLI, и до сих пор мне это проще :) – Tower

+0

На странице руководства для 'git-add' говорится, что' -p' позволяет ** интерактивно ** выбирать который куски добавить или нет. Это слово делает его человеком, а не сценарием. –

ответ

3

Я пошел и посмотрел, как работает 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 инструментов описывается; вы можете увидеть, как она построена только на тех командах, которые я показал выше.

Смежные вопросы