Mazání, Přesunutí a Přejmenování

Subversion umožňuje přejmenování a přesun souborů a adresářů. Takže v menu TortoiseSVN existují volby pro smazání a přejmenování.

Obrázek 4.34. Kontextové menu průzkumníka pro soubory s verzí

Kontextové menu průzkumníka pro soubory s verzí


Smazání souborů a adresářů

Použijte TortoiseSVNSmazat k odstranění souborů nebo adresářů z Subversion.

Pokud zvolíte TortoiseSVNOdstranit je soubor či adresář okamžitě odstraněn z Vaší pracovní kopie, také je označen v úložišti k odstranění při příštím odevzdání. Nadřazený adresář položky ukazuje překryv smazáno. Dokud změnu neodevzdáte, můžete soubor získat zpět pomocí TortoiseSVNVrátit použitím na nadřazený adresáři.

Pokud chcete vymazat položku z úložiště, ale ponechat si ji místně jako soubor/adresář bez verze, použijte Rozšířené Kontextové menuSmazat (ponechat místní). Musíte držet klávesu Shift, při klikání pravým tlačítkem myši na položku v panelu se seznamem v průzkumníku (pravý panelu), aby toto rozšířené kontextové menu bylo vidět.

Pokud je položka smazána přes průzkumníka místo pomocí kontextového menu TortoiseSVN, dialogové okno odevzdání tyto položky zobrazí a umožňuje je také odstranit ze správy verzí před odevzdáním. Nicméně pokud aktualizujete Vaši pracovní kopii, Subversion si všimne chybějící položky a nahradí ji nejnovější verzi z úložiště. Pokud potřebujete odstranit soubor spravovaný verzí, vždy použijte TortoiseSVNSmazat, aby Subversion nemusel hádat, co opravdu chcete udělat.

Získání smazaného souboru nebo adresáře zpět

Pokud jste smazali soubor nebo adresář a již jste odevzdali operace odstranění do úložiště, pak normální TortoiseSVNVrátit už ho vrátit zpátky nedovede. Ale soubor nebo adresář vůbec není ztracen. Pokud víte, v které revizi soubor nebo adresář byl odstraněn (pokud nevíte, použijte dialogové okno Záznamu), otevřete průzkumníka úložiště a přejděte na tuto revizi. Pak vyberte odstraněný soubor nebo adresář, klikněte na něj pravým tlačítkem myši a zvolte Kontextové menuKopírovat do... s jako cíl této operace vyberte cestu k Vaší pracovní kopii.

Přesouvání souborů a adresářů

Pokud chcete udělat jednoduché přejmenování souboru nebo adresáře na místě, použijte Kontextové menu Přejmenovat..., zadejte nový název položky a je hotovo.

Pokud chcete přesouvat soubory uvnitř Vaší pracovní kopie, možná do jiného podadresáře použijte obslužnou rutinu táhni a pusť:

  1. vyberte soubory nebo adresáře, které chcete přesunout

  2. přetáhněte je pravým tlačítkem myši do nového umístění uvnitř pracovní kopie

  3. pusťte pravé tlačítko myši

  4. v místní nabídce vyberte Kontextové menu SVN Přesunout soubory s verzí sem

Odevzdat nadřazený adresář

Vzhledem k tomu, že přejmenování a přesunování se provádí jako smazání následováno přidáním, musíte odevzdat nadřazený adresář přejmenovaného/přesunutého souboru tak, aby smazaná část přejmenování/přesunutí se objeví v dialogovém okně odevzdání. Pokud neodevzdáte odstraněnou část přejmenovat/přesunutí, zůstane v úložišti, a když Vaši spolupracovníci budou aktualizovat starý soubor nebude odstraněn. tedy budou mít obě kopie, starou i novou.

Musíte odevzdat přejmenovaný adresář před změnou některých souborů uvnitř adresáře, jinak Vaše pracovní kopie může být velmi neuspořádaná.

Dalším způsobem, jak přesunout nebo zkopírovat soubory je použit Windows příkazy kopírovat/vyjmout. Vyberte soubory, které chcete zkopírovat, klepněte na ně pravým tlačítkem a zvolte Kontextové menuKopírovat z kontextového menu průzkumníka. Pak přejděte do cílového adresáře, klikněte pravým tlačítkem myši a zvolte TortoiseSVNVložit. Pro přesunutí souborů, zvolte Kontextové menuVyjmout místo Kontextové menuKopírovat.

Můžete také použít průzkumníka úložiště pro přesun předmětů po okolí. Přečtěte si „Průzkumník Úložiště“ a dozvíte se více.

SVN Nepřesouvat externí

Neměli byste používat TortoiseSVN příkazy Přesunout nebo Přejmenovat na adresář, který byl vytvořen pomocí svn:externals. Tato akce by způsobila, že vnější položky jsou smazány z jejich nadřazeného úložiště. Tím pravděpodobně rozčílíte mnoho dalších lidí. Pokud potřebujete přesunout externí adresář, měli byste použít obyčejný přesun v rozhraní a poté nastavit vlastnost svn:externals v nadřazených adresářích zdroje a určení.

Řešení konfliktů v názvech souborů

Pokud úložiště již obsahuje dva soubory se stejným názvem, lišící se pouze velikostí písmen, (např. Test.txt a test.txt), nebudete moci aktualizovat nebo získat nadřazený adresář s Windows klientem. Zatímco Subversion podporuje názvy souborů s různou velikostí písmen, systém Windows ne.

Někdy se tak stane, že dva lidé odevzdají, z oddělených pracovních kopií, soubory, které náhodou mají stejný název, ale jinou velikost písmen. Také se může stát, že soubory jsou odevzdány ze systému se souborovým systémem, rozlišující velikost písmen, jako je Linux.

V tomto případě budete muset rozhodnout, který z nich v úložišti chcete zachovat a který smazat (nebo přejmenovat).

Zabránit souborům mít stejný název

There is a server hook script available at: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ that will prevent checkins which result in case conflicts.

Oprava Přejmenování Souborů

Někdy Vaše přátelské IDE přejmenuje pro Vás soubory jako součást cvičení refaktorování a samozřejmě nic Subversion neřekne. Pokusíte-li se odevzdat změny, Subversion uvidí staré jméno souboru jako chybějící a ten nový jako soubor bez verze. Stačilo by jen zaškrtnout nový název souboru, aby byl přidán, ale pak byste ztratili sledování historie, protože Subversion neví, že soubory spolu souvisejí.

Lepší způsob je oznámit Subversion, že tato změna je vlastně přejmenování. To můžete udělat v rámci dialogových oken Odevzdání a Zjistit změny. Stačí jen vybrat starý název (chybějící) i nové jméno (bez verze) a použit Kontextové menuOpravit přesun pro spárování souborů jako přejmenování.

Smazání souborů bez verze

Obvykle nastavíte Váš seznam k ignorování tak, že všechny vytvořené soubory jsou v Subversion ignorovány. Ale co když chcete vymazat všechny ignorované položky, protože chcete provést čisté sestavení? Obvykle byste toto nastavili v makefile, ale pokud makefile ladíte, nebo měníte sestavovací systém, je užitečné mít způsob jak zamést podlahu.

TortoiseSVN poskytuje právě takovou možnost použitím Rozšířená Kontextové menuSmazat položky bez verze.... Musíte držet Shift při kliknutí pravým tlačítkem na adresář v panel seznamu průzkumníka (pravý panel), aby bylo rozšířené kontextové menu vidět. Toto zobrazí dialogové okno, které vypíše všechny soubory bez verze kdekoli v pracovní kopii. Pak si můžete označit nebo odznačit položky, které mají být smazány.

Při mazání těchto položek je použít koš, takže pokud zde uděláte chybu a smažete soubor, který měl mít verzi, můžete ho stále obnovit.