Como adicionar uma pasta raiz aos arquivos arquivados com 7zip

4

Eu quero criar um arquivo de distribuição do meu código que inclua um subconjunto de diretórios e exclua todos os arquivos do subversion. Eu gostaria que os arquivos fossem adicionados ao arquivo com uma pasta raiz que identificasse a versão do lançamento, para que, quando o arquivo fosse descompactado, ele usasse essa pasta raiz (ou seja, myAppV1.3)

Não consigo encontrar um 'switch' para isso, por isso estou tendo que zipar tudo (usando as exclusões de 7zip para filtrar os arquivos que não quero) e descompacte-o na pasta especificada. Então feche toda a pasta novamente.

Exemplo do processo atual de três etapas que estou usando:

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

Existe uma maneira mais elegante de fazer isso?

    
por user9632 27.10.2009 / 07:24

3 respostas

3

Com base nas informações e inspiração fornecidas por Johannes Rössel (basicamente que os aplicativos de compactação não suportam o que estou tentando fazer), desenvolvi uma maneira mais elegante de resolver meu cenário específico. Embora isso não resolva a pasta raiz nomeada em um problema de arquivamento, ela pode fornecer às pessoas que procuram uma resposta uma maneira diferente de analisar seu próprio problema.

Minha solução para contornar o processo de arquivamento de 3 etapas foi substituir as duas primeiras etapas por uma verificação de controle de origem (por marca) em uma pasta nomeada.

Esta é uma solução muito mais elegante, assim como eu deveria ter atacado o problema em primeiro lugar (pois garante que a distribuição final corresponda ao que está no controle de origem).

    
por 27.10.2009 / 09:30
0

Tem sido assim para quase todos os formatos de compactação que conheço ou para os aplicativos que os manipulam. Olhando para o formato de arquivo ZIP, no entanto, acho que poderia teoricamente ser possível. Não há muito incentivo para implementar isso, aparentemente.

Mas por que você não está incluindo a pasta em primeiro lugar?

    
por 27.10.2009 / 07:34
0

Você poderia fazer isso como um processo de duas etapas

  • exporte o código-fonte da subversão para um diretório com um nome definido
  • use o 7-zip para empacotar esse diretório

svn export path-to-repository root-dir-name
7za a name-of-archive root-dir-name

Root-dir-name é o nome do diretório no qual você exportará os arquivos.

No seu exemplo, você faria

svn export path-to-repository MyAppV1.3

Isso exportará apenas as origens do seu projeto para o diretório MyApp1.3, omitindo todos os diles do subversion. Depois disso, use o 7-zip para criar um arquivo.

7za a MyAppV1.3.zip MyAppV1.3

Isso fará com que o arquivo zip da pasta onde você exportou a fonte. O arquivo terá arquivos no diretório raiz chamado MyAppV1.3. Você poderia, claro, usar o 7z como extensão para obter melhor compactação.

Para a linha de comando do cliente SVN, eu recomendo SlickSVN .

    
por 27.10.2009 / 11:42