2010-09-09 20 views
9

Jest to prawdopodobnie oczywiste i było wielokrotnie zadawane na różne sposoby, ale nie byłem w stanie znaleźć odpowiedzi po pewnym czasie.Pobieranie/pobieranie części bardzo dużego repozytorium?

przyjęto następujące założenia:

  • mam, powiedzmy, dysk 500GB w miejscowym końca;
  • Mam zdalne repozytorium o wartości 100 terabajtów; w związku z tym koszt klonowania całego repozytorium jest po prostu niewykonalny;
  • katalog roboczy używany do tworzenia zdalnego repozytorium składał się z 1000 katalogów najwyższego poziomu DIR001, DIR002, ... DIR00N, z których każdy zawierał wiele podkatalogów z plikami tylko w podkatalogach liścia (np. DIR001/subdir1/fileA1 ... DIR001/subf1/fileAN i DIR001/subdir2/fileB1 ... DIR001/subdir2/fileBN ...
  • i nIE wyraźnie oznakować lub katalogi branżowe DIR001, DIR002 ... DIR00N lub cokolwiek innego dla tej sprawy
  • Zainicjowuję nowe lokalne repozytorium git

Jak skutecznie wyciągnąć lub pobrać ostatnie c ommitted wersje, powiedzmy, DIR001/subdir2/fileB1 ... DIR001/subdir2/fileBN ze zdalnego repozytorium i nic więcej?

I

tylko ostatni oddany wersja pojedynczego pliku z DIR001/subdir2/fileB1 ... DIR001/subdir2/fileBN ze zdalnego repozytorium i nic więcej?

I

Jak skutecznie pociągnąć lub pobrać uprzednio popełnionego wersję podzbioru powiedział pliki i nic więcej?

Możliwe, że pobieranie/pobieranie nie jest właściwym poleceniem.

+0

Niestety nie mogę odpowiedzieć na to pytanie, ale proszę pamiętać, że podpisy i slogany są „mocno zniechęcony” na StackOverflow. Możesz dowiedzieć się więcej informacji tutaj: http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed/5038#5038 –

+0

Uwaga: w git-lfs (kwiecień 2015), pull/fetch byłoby bardziej wydajny. Zobacz moją zredagowaną odpowiedź. – VonC

+0

Git 2.5 (Q2 2015) obsługuje pojedyncze zatwierdzenie pobrania! Poniżej zredagowałem swoją odpowiedź, odnosząc się teraz do "[Pull a specific commit from remote git reository] (http://stackoverflow.com/a/30701724/6309)". – VonC

Odpowiedz

5

Odpowiedź na "Partial cloning" może pomóc w rozpoczęciu eksperymentów z płytkimi klonami.
Ale to będzie ograniczony:

  • do pewnej głębokości, i/lub do niektórych oddziałów,
  • ale nie do określonych plików lub katalogów (można pobrać plik lub katalog, choć rzadkie kasie, ale wciąż musisz najpierw uzyskać pełne repozytorium!)
  • Nawet pewne zatwierdzenie.
    (Git 2.5 (Q2 2015) obsługuje pojedyncze zatwierdzenie pobrania! Patrz "Pull a specific commit from a remote git repository").

Prawdziwym rozwiązaniem byłoby jednak oddzielenie ogromnego zdalnego repo na submoduły.
Zobacz What are Git limits lub Git style backup of binary files dla zilustrowania tego rodzaju sytuacji.


Aktualizacja kwiecień 2015:

Git Large File Storage (LFS) pozwoliłoby wyciągnąć/sprowadzić dużo bardziej wydajne (o GitHub, kwiecień 2015).

Projekt jest git-lfs (patrz git-lfs.github.com) i testowane z serwerem wspieranie go: lfs-test-server:
można zapisać metadane tylko w repo git, a duży plik gdzie indziej.

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

Powiązane problemy