2012-02-02 11 views
6

Mam jednoosobowe repozytorium rtęciowe z jednym folderem. Struktura katalogu jest prosta:Zmiana struktury katalogów w Mercurial

P104 
    lecture_notes 
    files under version control live here 

Po chwili uświadamiam sobie, że chce mieć dwa katalogi w repozytorium, jak to

P104 
    lecture_notes 
    files under version control live here (.hg is here) 
    homework 
    more files under version control 

Teraz, jeśli po prostu próbuję dodać pliki do repozytorium, to nie:

[email protected]:~/P104/lecture_notes$ ll .. 
total 16 
drwxr-xr-x 4 br br 4096 2012-02-02 18:05 ./ 
drwxr-xr-x 4 br br 4096 2012-02-01 20:46 ../ 
drwxr-xr-x 2 br br 4096 2012-02-02 17:44 homework/ 
drwxr-xr-x 4 br br 4096 2012-02-02 18:06 lecture_notes/ 
[email protected]:~/P104/lecture_notes$ hg add ../homework/hw1_P104.tex 
abort: ../homework/hw1_P104.tex not under root 

Moim pierwszym pomysłem było sklonować repo jeden poziom wyżej w strukturze katalogów, dodawanie plików do klonu i usunąć oryginalny repo. Ale nawet klonowanie nie powiedzie się:

[email protected]:~/P104/2011/lecture_notes$ hg clone . .. 
abort: destination '..' is not empty 

Więc pytanie brzmi, czy istnieje Mercurial-owski sposób w ten sposób inny niż tworzenie czystego repozytorium gdzieś indziej i kopiowanie plików ręcznie?

+1

+1 - Cóż za niesamowity sposób opanowania kontroli wersji. ;) – jmort253

Odpowiedz

4

Jeżeli katalogu głównym Mercurial repo jest pod ~/P104/lecture_notes, wolałbym:

  1. przemianować lecture_notes do P104
  2. zrobić podkatalogu lecture_notes
  3. przenieść wszystkie istniejące pliki w tym nowym pod- katalog
  4. dodać homework i jego pliki w katalogu o zmienionej nazwie P104
  5. hg add everythi ng

Chodzi o to, aby utrzymać .hg repo, gdzie to jest (~/P104/lecture_notes przemianowany na ~/P104/P104) i porządkować pliki w tym przemianowany katalogu.
Nie trzeba klonować.

+0

Proste rzeczywiście. Dzięki! –

7

Podoba mi się rozwiązanie VonC, w którym nie przenosisz folderu .hg. To proste rozwiązanie. Oto alternatywa gdzie zrobić przenieść go i tak musiał przemianować mniej foldery:

  1. przenieść folder .hg~/P104

    $ mv ~/P104/lecture_notes/.hg ~/P104 
    

    widziany z perspektywy Mercurial, trzeba będzie przeniósł wszystkie pliki najwyższego poziomu do katalogu lecture_notes. W folderze homework pojawią się również nowe niepotwierdzone pliki.

  2. Niech Mercurial Dowiedzieć się zmienia nazwę:

    $ hg addremove 
    

    To będzie poprawnie wykryć, że pliki, które były pliki najwyższego poziomu przed teraz żyć w katalogu lecture_notes. Pliki niezatwierdzone (i niezignorowane) w homework są właśnie dodane.

  3. zapisać zmiany:

    $ hg commit 
    

Ogólnym "Trick" jest to, że pliki w kopii roboczej są widoczne w stosunku do katalogu .hg. Tak więc przesuwając katalog .hg w hierarchii systemu plików, skutecznie przenosimy pliki kopii roboczej do hierarchii wewnątrz kopii roboczej.

+1

dzięki! Dobrze wiedzieć o 'addremove'. Następnym razem mam ten problem, użyję tego rozwiązania (z VonC sposobem musiałem ręcznie 'hg add' i' hg remove' files) –

Powiązane problemy