LINUX.ORG.RU

Git...как склонировать часть исходников?

 ,


0

2

Вот например хочу загрузить эту тему:

$ git clone https://github.com/getpelican/pelican-themes/tree/master/foundation-default-colours
Cloning into 'foundation-default-colours'...
remote: Not Found
fatal: repository 'https://github.com/getpelican/pelican-themes/tree/master/foundation-default-colours/' not found

Как? Без клонирования всего репозитория.

Deleted

Как? Без клонирования всего репозитория.

В общем случае никак, git так не умеет, тебе нужно склонировать весь репозиторий. Но если ты хочешь просто сэкономить место и bandwidth — сделай shallow clone (git clone --depth=1).

intelfx ★★★★★ ()
Ответ на: комментарий от backbone

А оно точно каталогами может выгружать?

$ git archive --remote=https://github.com/getpelican/pelican-themes.git HEAD:/foundation-default-colours
fatal: Operation not supported by protocol.
$ git archive --remote=git://github.com/getpelican/pelican-themes.git HEAD:/foundation-default-colours
fatal: The remote end hung up unexpectedly

Deleted ()
Ответ на: комментарий от Deleted

А, гм, не знал про такую. Но это тоже без истории. У тебя ошибка скорее всего потому что слеш в начале пути не нужен.

intelfx ★★★★★ ()
Ответ на: комментарий от Deleted

Похоже, на GitHub эта команда не работает, проверил с домашним Gitorious, там прокатывает.

> git archive --remote=git@github.com:getpelican/pelican-themes.git master:foundation-default-colours . | tar -x
Invalid command: 'git-upload-archive 'getpelican/pelican-themes.git''
  You appear to be using ssh to clone a git:// URL.
  Make sure your core.gitProxy config option and the
  GIT_PROXY_COMMAND environment variable are NOT set.
fatal: The remote end hung up unexpectedly
tar: Это не похоже на tar-архив
tar: Завершение работы с состоянием неисправности из-за возникших ошибок

backbone ★★★★★ ()
Ответ на: комментарий от intelfx

если ты хочешь просто сэкономить место и bandwidth — сделай shallow clone (git clone --depth=1)

Я про этот шаллов клон вот тут давно спрашивал кх он не работает и внятного объяснения до сих пор не имею. Более того, так и не встретил человека, который бы его успешно использовал - все советуют друг другу то, что в гугле прочитали :). У тебя по тому топику идей нету?

Deleted ()
Ответ на: комментарий от Deleted
$ git clone --depth 1 https://github.com/torvalds/linux; rm -rf linux
Клонирование в «linux»…
remote: Counting objects: 66899, done.
remote: Compressing objects: 100% (61790/61790), done.
remote: Total 66899 (delta 6457), reused 18778 (delta 4120), pack-reused 0
Получение объектов: 100% (66899/66899), 175.96 MiB | 1.53 MiB/s, готово.
Определение изменений: 100% (6457/6457), готово.
Распаковка файлов: 100% (62911/62911), готово.

$ git clone https://github.com/torvalds/linux; rm -rf linux
Клонирование в «linux»…
remote: Counting objects: 5891006, done.
remote: Compressing objects: 100% (982/982), done.
^Cлучение объектов:   0% (11406/5891006), 4.67 MiB | 2.57 MiB/s

Я не дождался конца второго clone, но разницу в количестве объектов ты видишь. Удостоверься, что на том конце не dumb transport.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Разницу в количестве объектов я и у себя вижу, только трафика вытягивается-то все равно больше.

Удостоверься, что на том конце не dumb transport.

Как это сделать с клиентской стороны?
Если по совету c https://stackoverflow.com/questions/9270488/is-it-possible-to-detect-whether-..., то grep возвращает Content-Type: application/x-git-upload-pack-advertisement.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

Если хочется сэкономить на размере рабочего каталога и ускорить операции типа git status, можно использовать sparse checkout. Правда клонироваться будет все равно целый репозиторий (но не все файлы будут распаковываться)

annulen ★★★★★ ()
Ответ на: комментарий от annulen

Нет, мне именно часть репозитория стащить хотелось, не для редактирования и перезалива на github, а просто чтобы тему установить

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.