2010-04-24 12 views
5

Używam git jako narzędzia zapasowego i "profilu mobilnego" dla mojego katalogu $ HOME między laptopem a komputerem.Git ignoruje katalogi .git w podkatalogach

Mój problem polega na tym, że pod moim $ HOME mam katalog deweloperski z wieloma projektami git, nad którymi pracuję. Git nie pozwoli mi dodawać folderów .git podkatalogów. Tak więc, aby zaangażować się w te projekty, muszę wprowadzić zmiany do mojego repozytorium $ HOME git, wyciągnąć laptopa (gdzie zostały utworzone i .git dir exsits) i zatwierdzić.

Czytałem o submodułach, ale tak naprawdę nie jest to, czego chcę. Po prostu chcę, aby foldery .git dla dzieci były traktowane jak każdy stary katalog, dzięki czemu mogę je przenosić i tworzyć kopie zapasowe.

Czy ktoś to zrobił lub ma pomysł?

+4

imho, to prawdopodobnie niewłaściwe narzędzie do pracy. jeśli chcesz zsynchronizować swój laptop i komputer, możesz spojrzeć na unisono. jeśli chcesz wyposażyć całą pracę, którą wykonujesz w $ HOME, najłatwiejszą opcją jest regularne rsyncs, ale oczywiście nie jest to przyrostowe. potrzebujesz przyrostowego produktu do tworzenia kopii zapasowych lub możesz zhackować coś za pomocą rsync i git –

+0

@Igor: Zgadzam się, ogólnie. Nie koniecznie musisz jednak zsynchronizować repozytorium git - możesz łatwo utworzyć skrypt umożliwiający ich ręczne przesuwanie/pobieranie/aktualizowanie zbiorczo, nawet jeśli zdecydujesz, że submoduły nie są właściwą metodą (chociaż prawdopodobnie mogłyby pracować w tym celu). cel, powód). – Cascabel

+0

rsnapshot może wykonać przyrostową rzecz. rzetelnie submoduły są tym, czego powinieneś używać. Napisałem skrypt, aby przenieść wszystkie transakcje repo. dlaczego i tak chcesz zmienić obiekty git? po prostu ułatwić transfer? użyj czegoś innego. również to NIE jest takie pytanie, które powinno być na SUPERUSER. dlaczego ludzie pytają o te wszystkie pytania nie programujące na SO. – xenoterracide

Odpowiedz

0

Polecam skrypt, który najpierw backup co .git projektów masz pod $ HOME: to będzie produkować jeden plik kopii zapasowej (nadal pod $ HOME)
Zobacz git bundle więcej.

A potem można dodać/zaktualizować te zapasową (lub „pakiet”) plików do głównego git repo (która zawiera wszystkie swoje $HOME wyjątkiem .git projektów)

Wreszcie, można wyeksportować wszystkie twój $ HOME jako jeden plik z tą samą techniką kopii zapasowej Git (git bundle).

0

W przeszłości używałem gibak, narzędzia do tworzenia kopii zapasowych Git. Oprócz dbania o atrybuty plików, zajmuje się także repozytoriami Git w twoim katalogu domowym.

Jedno zastrzeżenie. Używałem go przez jakiś czas, ale czasami kopia zapasowa stała się skorumpowana. Nie zbadałem tego, ale podejrzewam, że ma to związek z tym, że uruchomione aplikacje stale zapisują dane w twoim katalogu domowym. W pewnym momencie niedopasowane hashe i musisz zrobić kilka inteligentnych rzeczy, aby je naprawić (lub rozpocząć nową kopię zapasową).

Przynajmniej spróbuj, może ci pomóc. Problem, o którym wspomniałem, może być również spowodowany przez Git. Ponieważ próbowałem tego 1,5 roku temu, może to być w międzyczasie naprawione.

2

Nie rób tego. To zły pomysł, ponieważ tworzysz wersjonowaną kopię zapasową wersji repozytorium. Po prostu utwórz kopię zapasową za pomocą rsync (nadal możesz zainstalować wersję macierzystą za pomocą git).

2

Osobiście używam gita do synchronizacji niektórych plików-kropek, takich jak .profile lub .vimrc. Aby uniknąć problemów takich jak twój, mój git znajduje się w $ HOME/dot, a pojedyncze pliki są oznaczone symbolami w $ HOME.

Powiązane problemy