"Não é possível verificar um único arquivo. O melhor nível de checkout que você pode fazer é no nível do diretório".
Como contornar esse problema ao usar o Subversion?
Temos esta pasta no Subversion, onde guardamos todas as nossas imagens. Eu só quero verificar um arquivo (imagem) a partir disso. Essa pasta é muito grande e tem várias outras coisas que não preciso agora.
svn
version-control
bluegene
fonte
fonte
svn up
no diretório local do seu computador.Respostas:
A resposta simples é que você
svn export
arquiva o arquivo em vez de fazer o check-out.Mas isso pode não ser o que você deseja. Convém trabalhar no arquivo e fazer o check-in novamente, sem precisar fazer o download de GB de lixo eletrônico desnecessário.
Se você possui o Subversion 1.5+, faça uma verificação esparsa:
Para uma versão mais antiga do SVN, você pode se beneficiar do seguinte:
Uma alternativa (por exemplo, se o diretório tiver muito lixo desde a revisão em que foi criado) é fazer uma cópia de URL-> URL do arquivo que você deseja em um novo local no repositório (efetivamente, este é um ramo ativo do arquivo). Confira esse diretório e faça suas modificações.
Não tenho certeza se você pode mesclar sua cópia modificada de volta inteiramente no repositório sem uma cópia de trabalho do destino - nunca precisei. Se sim, faça isso.
Caso contrário, infelizmente, talvez seja necessário encontrar outra pessoa que tenha o diretório inteiro verificado e levá-lo a fazê-lo. Ou, talvez, quando você fizer as modificações, o restante tenha terminado o download ...
fonte
svn export
do que usar a interface da Web, se eu souber qual arquivo eu quero. O questionador já usa SVN, então acho que depende de qual cliente e se esse cliente facilita o usosvn export
. Eu encontrar a interface web melhor para navegar do quesvn ls
, embora :-)Tente em
svn export
vez desvn checkout
. Isso funciona para arquivos únicos.O motivo da limitação é que
checkout
cria uma cópia de trabalho, que contém metainformações sobre repositório, revisão, atributos etc. Esses metadados são armazenados em subdiretórios denominados '.svn'. E arquivos únicos não têm subdiretórios.fonte
svn
não fazem exportação de arquivo único.svn cat $url_to_file_in_repo > $local_file_name
.Use
svn cat
ousvn export
.Para isso, você não precisa buscar o diretório de trabalho, mas não poderá confirmar nenhuma alteração feita. Se você precisar fazer alterações e confirmá-las, precisará de um diretório de trabalho, mas não precisará buscá-lo completamente. Faça o checkout da revisão em que o diretório ainda estava / quase vazio e use 'svn cat' para extrair o arquivo do HEAD.
fonte
svn cat svn://.../my_file.txt
era exatamente o que eu estava procurando. Eu trabalho em umsvn://
únicohttp://
repositório (não ) e parece que as interfaces websvn mais recentes não fornecem um download de arquivo bruto (ou o temos configurado incorretamente ou sou cego). É mais fácil fazer isso do quecheckout
+up
apenas para baixar um arquivo.Fonte
fonte
curl
ouwget
.Segue-se uma solução equivalente da resposta aceita pelo TortoiseSVN (eu a escrevi em um documento interno para minha empresa quando estamos adotando o SVN recentemente). Eu pensei que seria útil compartilhar aqui também:
Fazendo check-out de um único arquivo: O Subversion não suporta check-out de um único arquivo, apenas o check-out de estruturas de diretório. (Referência: http://subversion.tigris.org/faq.html#single-file-checkout ). Isso ocorre porque, com todos os diretórios cujo check-out é feito como cópia de trabalho, os metadados referentes a modificações / revisões de arquivo são armazenados como uma pasta oculta interna (.svn / _svn). No momento, isso não é suportado (v1.6) para arquivos únicos.
Estratégia alternativa recomendada: você terá que fazer a parte do diretório de checkout apenas uma vez, depois disso, você poderá fazer o checkout diretamente de seus arquivos únicos. Faça uma verificação esparsa da pasta pai e da estrutura de diretórios. Um checkout esparso é basicamente o check-out apenas da estrutura de pastas sem preencher os arquivos de conteúdo. Portanto, você faz check-out apenas das estruturas de diretório e não precisa fazer check-out de TODOS os arquivos, como foi a preocupação. Referência: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
Etapa 1 : Prossiga para o repositório do navegador
Etapa 2 : Clique com o botão direito do mouse na pasta pai dentro do repositório que contém todos os arquivos nos quais você deseja trabalhar e selecione Checkout.
Etapa 3 : na nova janela pop-up, verifique se o diretório do checkout aponta para o local correto no seu PC local. Também haverá um menu suspenso chamado "profundidade de checkout". Escolha “Somente este item” ou “Filhos imediatos, incluindo pastas”, dependendo da sua necessidade. A segunda opção é recomendada, pois, se você quiser trabalhar na pasta aninhada, poderá prosseguir diretamente da próxima vez, caso contrário, precisará seguir todo esse procedimento novamente para a pasta aninhada.
Etapa 4 : a (s) pasta (s) pai (s) agora deve estar disponível na pasta escolhida localmente e agora está sendo monitorada com o SVN (uma pasta oculta “.svn” ou “_svn” deve estar presente). Agora, dentro do repositório, clique com o botão direito do mouse no arquivo que você deseja retirar sozinho e selecione a opção “Atualizar item para revisão”. Agora, o arquivo único pode ser trabalhado e verificado novamente no repositório.
Eu espero que isso ajude.
fonte
Você pode fazer isso em duas etapas:
Faça o check-out de um repositório SVN vazio com apenas meta informações:
Execute
svn up
para atualizar o arquivo especificado:fonte
Uma atualização caso o que você realmente precisa possa ser coberto com a inclusão do arquivo no checkout de outra pasta.
Desde o SVN 1.6, você pode criar arquivos externos , um tipo de link svn. Isso significa que você pode ter outra pasta com versão que inclua um único arquivo. Também é possível confirmar alterações no arquivo em um checkout desta pasta.
É muito simples, faça o checkout da pasta que você deseja incluir no arquivo e adicione uma propriedade à pasta
com conteúdo como este:
Depois que você confirmar isso, o arquivo aparecerá em checkouts futuros da pasta. Basicamente, funciona, mas existem algumas limitações, conforme descrito na documentação vinculada acima.
fonte
Vá para o repo-browser, clique com o botão direito do mouse no arquivo e use 'Salvar como', embora eu esteja usando o TortoiseSVN.
fonte
(Edite filename.log)
fonte
A resposta de Steve Jessop não funcionou para mim. Eu li os arquivos de ajuda do SVN e, se você tiver apenas uma imagem, provavelmente não deseja fazer check-in novamente, a menos que esteja fazendo o Photoshop, então exporte é um comando melhor do que o check-out, pois não é versionado (mas é menor).
E o ARG --thpth não deve estar vazio, mas com arquivos para obter os arquivos no diretório imediato. Então você obterá todos os campos, não apenas o, mas vazio não retorna nada do repositório.
ou
Quanto às outras respostas, cat permite que você leia o conteúdo que é bom apenas para texto, não para imagens de todas as coisas.
fonte
--depth empty
era que os outros arquivos não deveriam ser retirados e você pode obter apenas um único arquivosvn up <source/file>
. Comsvn export
, não há necessidade de fazer isso, basta especificar o arquivo.Eu apenas navegava e exportava o arquivo único. Se você tiver acesso HTTP, basta usar o navegador da web para encontrar o arquivo e pegá-lo.
Se você precisar recuperá-lo depois de editá-lo, isso pode ser um pouco mais tedioso, mas tenho certeza de que pode haver uma
svn import
função ...fonte
Faça algo parecido com isto:
Basicamente, a idéia é criar o diretório em que você deseja obter o arquivo do SVN. Use o
svn cat
comando e redirecione a saída para o mesmo arquivo nomeado. Por padrão, o gato despeja informações no stdio.fonte
Se você deseja apenas um arquivo sem informações de revisão, use
fonte
Com o Subversion 1.5, é possível verificar (todos) os arquivos de um diretório sem verificar nenhum subdiretório (os vários sinalizadores --thpth). Não é exatamente o que você pediu, mas uma forma de "menos que tudo".
fonte
Usando a técnica de verificação esparsa, você PODE verificar um arquivo específico que já foi retirado ou existe ... com um truque simples:
Após o checkout do nível superior do seu repositório usando a opção 'this item only', no Windows Explorer, você DEVE primeiro clicar com o botão direito do mouse no arquivo que precisa atualizar; escolha Repo Browser no menu de contexto; encontre esse arquivo novamente no navegador do repositório e clique com o botão direito do mouse. Agora você deve ver o "item de atualização para revisão" no menu de contexto.
Não tenho certeza se é um recurso não documentado ou simplesmente um bug. Levei um longo período após o trabalho para finalmente encontrar esse truque. Estou usando o TortoiseSVN 1.6.2.
fonte
Eu queria fazer check-out de um único arquivo em um diretório, que não fazia parte de uma cópia de trabalho.
Vamos obter o arquivo no seguinte URL: http: //subversion.repository.server/repository/module/directory/myfile
Então, verifiquei o diretório em questão que contém o arquivo de destino que eu queria acessar em um diretório fictício (digamos etcb para o URL que termina com
/etc
).Depois esvaziei o arquivo .svn / entradas de todos os arquivos do diretório de destino que não precisava, para deixar apenas o arquivo que queria. Nesse arquivo .svn / inputs , você tem um registro para cada arquivo com seus atributos; portanto, deixe apenas o registro referente ao arquivo que você deseja obter e salvar.
Agora você só precisa copiar '' .svn '' para o diretório que será uma nova "cópia de trabalho". Então você só precisa:
Agora o diretório diretório está sob controle de versão. Não se esqueça de remover o diretório directoryb, que era apenas uma '' cópia de trabalho temporária ''.
fonte
Como nenhuma das outras respostas funcionou para mim, eu fiz isso usando este hack:
Isso criará uma nova pasta local que possui apenas os arquivos do caminho remoto. Em seguida, você pode fazer um link simbólico para os arquivos que deseja ter aqui.
fonte
svn co
um arquivo para evitar um diretório inteiro cheio de arquivos de imagem. Além disso, a adição de um link simbólico pode aumentar a complexidade, mover de um diretório temporário pode funcionar, mas você ainda precisa verificar o diretório inteiro de imagens para apenas uma imagem. @ steve-Jessop teve a idéia certaEste problema é coberto por:
http://subversion.tigris.org/issues/show_bug.cgi?id=823
Existe um script anexado que permite fazer check-out de um único arquivo do svn, fazer alterações e confirmar as alterações no repositório, mas você não pode executar o "svn up" para verificar o restante do diretório. Foi testado com svn-1.3, 1.4 e 1.6.
fonte
Se você quiser apenas exportar o arquivo e não precisar atualizá-lo mais tarde, poderá fazê-lo sem precisar usar os comandos SVN.
Usando o navegador de repositório TortoiseSVN , selecione o arquivo, clique com o botão direito do mouse e selecione " Copiar URL para a área de transferência ". Cole esse URL no seu navegador e, após o login, você será solicitado a baixar o arquivo.
Dessa forma, você também pode selecionar a revisão desejada e fazer o download de uma versão mais antiga do arquivo.
Observe que isso é válido se o seu servidor SVN tiver uma interface da web.
fonte