В настоящее время я столкнулся со следующей проблемой:
Я занимаюсь переносом инструмента C++ со старой версии libgit2 на текущую версию (v1.8.0). В старой версии libgit2 была удобная функция void git_remote_clear_refspecs(git_remote *remote), которая позволяла очищать спецификации ссылок, связанные с удаленным репозиторием.
К сожалению, эта функция больше не доступна в libgit2 v1.8.0. Следовательно, сейчас я ищу альтернативный метод для достижения той же цели.
Один из подходов предполагает определение количества спецификаций ссылок, связанных с удаленным устройством, с помощью size_t git_remote_refspec_count(const git_remote *remote) . Зная количество спецификаций ссылок, я могу получить константный указатель на конкретную спецификацию ссылки с помощью const git_refspec * git_remote_get_refspec(const git_remote *remote, size_t n). Однако проблема возникает при попытке использовать полученный константный указатель для вызова void git_refspec_free(git_refspec *refspec), поскольку для этого требуется неконстантный указатель.
Таким образом, мой вопрос: как я могу очистить ссылки на удаленный компьютер в libgit2 v1.8.0, учитывая эти ограничения?
Никакие файлы конфигурации не задействованы. refspecs сначала добавляются, чтобы получить обзор всех тегов на удаленном компьютере. Следующим шагом будет очистка всех спецификаций ссылок и добавление новой спецификации ссылок для выполнения выборки с использованием вновь определенной спецификации ссылок.
Кажется, что ссылки, добавленные на удаленный компьютер, больше нельзя удалить. Однако вы все равно можете вызвать функцию git_remote_fetch, указав спецификацию ссылки, которая будет использоваться исключительно для операции выборки. Если спецификация не указана, будут использоваться настроенные спецификации для удаленного устройства. Для получения дополнительной информации обратитесь к документации libgit2.
Мне не хватает немного контекста. Почему у вас есть ссылки, которые вы хотите очистить в первую очередь? И как они туда попали? Вы добавляете спецификации ссылок, а затем хотите их очистить, или спецификации ссылок определены в файле конфигурации?