2013-05-08 3 views
1

Я видел использование следующего синтаксиса git cloneМожно ли клонировать локальный, обычный репозиторий как открытый репозиторий непосредственно на удаленный хост?

git clone --bare /path/to/repo /path/to/bare/repo.git 

Однако, это, кажется, не работает, если пункт назначения находится на удаленном хосте. Я попробовал несколько форматов для назначения - например, с префиксом ssh:// или [email protected], но все мои попытки дали папки, созданные локально.

Очевидно, что я нашел другие подходы (https://stackoverflow.com/a/1402783/741970), но есть ли способ использовать приведенный выше синтаксис?

+0

Каковы были сообщения об ошибках? –

+0

@EdwardFalk Не было сообщений об ошибках, просто клонировано репо, но локально. –

ответ

1

Это невозможно. Git еще не «создал этот репозиторий на удаленном хосте, а затем заполнил его, используя эту историю» в своем протоколе. Я видел, что это обсуждалось в главном списке Git, но результаты были неубедительными (вроде «выполнимые, но никто не нуждается в этом, так что никто не мешает реализовать»).

Я должен добавить, что подход, предложенный в ответе, с которым вы связаны, - это довольно uh & hellip; странно, в частности, идея сначала сделать локальное клонирование.

Что вы должны сделать вместо этого:

  1. Войдите на удаленный хост через SSH.
  2. Создайте удаленный каталог, используя git init --bare. Удостоверьтесь, что у него есть надлежащие права доступа и т. Д.
  3. Выйти.
  4. Нажмите, что нужно, из вашего локального хранилища. Обычно это сводится к управлению

    git push <that_repo> +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/* 
    

    Если вы намерены и дальше взаимодействовать с этим репозиторием из локального репозитория вы могли бы рассмотреть первый добавив его в качестве имени пульта дистанционного управления, как

    git remote add quux ssh://[email protected]/path/to/the/repo.git 
    
1

Я не парень C, но тыкать в clone.c's cmd_clone function, это не похоже. В различных справочных сообщениях используются фразы типа git clone <repo> [<dir>], подразумевающие простое имя каталога в качестве адресата, и все операции на стороне назначения, по-видимому, являются стандартными файловыми операциями, такими как рекурсивные операции и mkdir, в то время как материал репо выражается в вызовах to transport.c, особенно here, который вызывает transport_get, что касается URL-адресов (файл/git/ssh/etc).

Вы можете настроить общий ресурс NFS, указывающий на сервер (или Dropbox folder), но это, вероятно, не то, что вам нужно.

1

вы внутри но вы можете дистанционно выполнить обычную команду git clone: ​​

ssh [email protected] git clone --bare [email protected]:/path/to/repo /remote/path/to/bare/repo 

, конечно, NA T и разрешения могут сделать это невозможным в зависимости от вашей настройки ...

, но, чтобы ответить на ваш вопрос, нет, вы не можете использовать синтаксис, который вы хотели бы сделать, что хотите.

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