2014-09-08 5 views
1

Я довольно новичок в Git/LibGit2Sharp и пытаюсь создать зеркало репозитория git с помощью LibGit2Sharp. Следуя указаниям, приведенным здесь: https://github.com/libgit2/libgit2sharp/issues/577, я первый зеркальный внешний репозиторий в локальную папку, добавив к нему пульт дистанционного управления, и используется repo.Network.fetch(remote, fetchRefSpec) где fetchRefSpec является refs/\*:refs/*Libgit2sharp Как сделать зеркальное нажатие

Теперь я хочу, чтобы передать данные на другой удаленный репозиторий. Здесь я смущен. Потому что, когда вы делаете это с помощью команд git, вы устанавливаете запись конфигурации remote.remoteName.mirror в значение true, а затем делаем git push remoteName. Указание любого другого refSpec, когда зеркало установлено в true, дает ошибку.

Однако при использовании LibGit2Sharp, даже после того, как я установил mirror = true, я все равно должен предоставить pushRefSpec при нажатии. Предоставление пустого или подстановочного знака refSpecs исключает исключение. Я даже попробовал refs/tags/\*:refs/tags/*, но у меня такое же исключение. Цикл через все ветки в pushRefSpec работает, но не создает зеркала.

Кто-нибудь пробовал это? Возможно, лучший способ сделать это?

ответ

1

Конфигурация .mirror является опцией для инструмента git. libgit2 (sharp) работает на другом уровне, где вам нужно точно указать, что вы хотите нажать.

На данный момент он, к сожалению, не поддерживает refspecs с рисунком при нажатии, поэтому, если вы хотите нажать каждую ссылку, вам придется добавить каждую из них отдельно как refspec для push.

+0

Спасибо за ваш ответ Карлос. Проникновение через каждый референт в локальном хранилище помогает. – SJM

+0

Привет, Карлос. Можете ли вы указать пример кода для этой задачи? Мне нужно сделать то же самое, но не понимаю, как изменить URL-адрес назначения. 'Network.Push (remote)' пытается нажать на старое репо, и я не вижу способов его изменить. – Skyblade

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