2013-06-06 2 views
0

Мне нужно зафиксировать все workdir, но я не могу найти решение, которое может добавить подкаталоги в индекс. Я пробовал с git_index_add_bypath(), но он, кажется, не добавляет дерево для подкаталогов. Я использую Qt и libgit2 для c, потому что привязка языка к Qt, похоже, не работает.Как добавить подкаталог в libgit2

ответ

2

Существуют разные способы в зависимости от того, что вам нужно. «commit all workdir» не передает какой-либо.

Если вы хотите обновить версию каждого отслеживаемого файла, вы можете перебрать записи в индексе и вызвать git_index_add_bypath для каждого.

Что-то еще, все становится мутным, так как вы можете или не хотите принимать во внимание правила игнорирования. Общее решение - использовать API статуса, чтобы увидеть, какие файлы были изменены или добавлены, и добавить их в индекс в соответствии с результатом, который вы ищете (игнорировать правила, добавлять новые файлы или нет, удалять файлы, которые не являются в рабочей тетради больше).

+0

Спасибо за ответ. Мне просто нужно сделать функцию, которую я могу вызвать, когда файл в рабочем каталоге добавлен или изменен. Функция должна добавить все новые файлы в индекс и зафиксировать изменения. С git_index_by_path() я могу обновить репо для всех файлов в рабочем каталоге, но я не могу для файлов в подкаталогах, t добавлено в indextree. Для API статуса я не могу найти пример для запуска. Спасибо. – pacix

+0

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

+0

Спасибо за помощь. Я решил с git_index_add_bypath(). Реальная проблема заключалась в том, что команда git status показывает мне файлы, как они удалены, а не добавлены. Теперь после git_commit_create_v() я вызываю git_reset с последним фиксацией для цели, и все работает нормально. Спасибо за ваше время. – pacix

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

  • Нет связанных вопросов^_^