Jak dodać folder główny do plików zarchiwizowanych za pomocą 7zip

4

Chcę utworzyć archiwum dystrybucyjne mojego kodu, które zawiera podzbiór katalogów i wyklucza wszystkie pliki subversion. Chciałbym, aby pliki zostały dodane do archiwum z folderem głównym, który identyfikuje wersję wydania, aby po rozpakowaniu archiwum używał tego folderu głównego (tj. MyAppV1.3)

Nie mogę znaleźć „przełącznika” do tego, więc obecnie muszę spakować wszystko (używając wyjątków 7zip do odfiltrowania plików, których nie chcę), a następnie rozpakować do mojego określonego folderu. Następnie ponownie skompresuj cały folder.

Przykład obecnego trzyetapowego procesu, którego używam:

c:\dev\myApp>7za -xr!?svn\* a myApp_temp.zip @listOfFilesInRelease.txt 
c:\dev\myApp>7za -omyAppV1.3 x myApp_temp.zip
c:\dev\myApp>7za a myAppV1.3.zip myAppV1.3

Czy można to zrobić w bardziej elegancki sposób?

użytkownik9632
źródło

Odpowiedzi:

3

Opierając się na informacjach i inspiracjach dostarczonych przez Johannesa Rössela (zasadniczo, że aplikacje do kompresji nie obsługują tego, co próbuję zrobić), opracowałem bardziej elegancki sposób rozwiązania mojego konkretnego scenariusza. Chociaż nie rozwiązuje to nazwanego folderu głównego w problemie z archiwum, może zapewnić osobom, które szukają odpowiedzi w inny sposób, patrząc na swój problem.

Moim rozwiązaniem, aby obejść 3-etapowy proces archiwizacji, było zastąpienie pierwszych dwóch kroków przez kontrolę źródła (przez znacznik) w folderze nazwanym.

Jest to o wiele bardziej eleganckie rozwiązanie, tak jak powinienem był zaatakować problem w pierwszej kolejności (ponieważ zapewnia, że ​​końcowa dystrybucja odpowiada temu, co jest pod kontrolą źródła).

użytkownik9632
źródło
1
Subversion ma również poręczne exportpolecenie, które zapewnia, że ​​otrzymasz czyste zamówienie bez wszystkich katalogów subversion.
Joey,
Doskonałe dzięki jeszcze raz Johannes. Właśnie tego potrzebuję.
user9632
0

Tak było w przypadku prawie wszystkich formatów kompresji, które znam, lub aplikacji, które je obsługują. Patrząc na formacie ZIP, choć myślę, że to mogłoby być teoretycznie możliwe. Widocznie po prostu nie ma dużej zachęty do tego.

Ale dlaczego nie umieścisz folderu w pierwszej kolejności?

Joey
źródło
Głównym powodem, dla którego nie uwzględniam directoy, jest to, że chcę dołączyć numer wersji jako część archiwum. Muszę także „wykluczyć” niektóre pliki, co jest łatwe w programie 7zip (przynajmniej w porównaniu do tworzenia directoy i kopiowania plików do tego przed skompresowaniem).
user9632
0

Możesz to zrobić jako proces dwuetapowy

  • eksportuj kod źródłowy z subversion do katalogu o ustalonej nazwie
  • użyj 7-zip, aby spakować ten katalog

svn eksport ścieżka do repozytorium root-dir-name
7za nazwa-archiwum root-dir-name

Root-dir-name to nazwa katalogu, do którego wyeksportujesz pliki.

W twoim przykładzie zrobiłbyś

Ścieżka eksportu SVN do repozytorium MyAppV1.3

Spowoduje to wyeksportowanie tylko źródeł twojego projektu do katalogu o nazwie MyApp1.3, z pominięciem wszystkich plików subversion. Po tym użyj 7-zip, aby utworzyć archiwum.

7za a MyAppV1.3.zip MyAppV1.3

Spowoduje to utworzenie archiwum zip z folderu, w którym wyeksportowano źródło. Archiwum będzie mieć pliki w katalogu głównym o nazwie MyAppV1.3. Możesz oczywiście użyć 7z jako rozszerzenia, aby uzyskać lepszą kompresję.

Dla klienta SVN z linii poleceń polecam SlickSVN .

T. Kaltnekar
źródło