Manuals

Removendo, Movendo e Renomeando

O Subversion permite renomear e mover ficheiro e pastas. Portanto, existem entradas para apagar e renomear no sub-menu do TortoiseSVN.

Figura 4.34. Menu de contexto do Explorador para ficheiros versionados

Menu de contexto do Explorador para ficheiros versionados


Removendo ficheiros e pastas

Para remover ficheiros ou pastas do Subversion usa TortoiseSVNRemover.

Quando TortoiseSVNRemover

Se queres remover um tem do repositório, mas mantê-lo localmente como um ficheiro/pasta não versionado, usa Menu de Contexto ExtendidoRemover (manter local). Tens de manter premida a tecla Shift enquanto clicas com o botão direito no item, no painel lista do explorador (painel direito), de modo a veres isto no menu de contexto estendido.

If an item is deleted via the explorer instead of using the TortoiseSVN context menu, the commit dialog shows those items as missing and lets you remove them from version control too before the commit. However, if you update your working copy, Subversion will spot the missing item and replace it with the latest version from the repository. If you need to delete a version-controlled file, always use TortoiseSVNDelete so that Subversion doesn't have to guess what you really want to do.

Recuperando um ficheiro ou pasta removido

Se removeste um ficheiro ou pasta e já submeteste essa operação de remoção para o repositório, então o normal TortoiseSVNReverter , não o pode mais recuperar. Mas o ficheiro ou pasta não está ainda totalmente perdido. Se conheceres a revisão em que o ficheiro ou pasta foi removido (se não sabes, usa a caixa de diálogo do registo para a encontrares), abre o navegador de repositório e comuta para essa revisão. Selecciona o ficheiro ou pasta que removeste, clica à direita e selecciona Menu de ContextoCopiar para..., como destino dessa operação de cópia, selecciona o caminho para a tua cópia de trabalho.

Movendo ficheiros e pastas

Se queres fazer um simples renomear no lugar de um ficheiro ou pasta, usa Context MenuAlterar nome... Insere o novo nome para o item e está feito.

Se pretendes mover ficheiros dentro da tua cópia de trabalho, talvez para uma subpasta diferente, usa o manípulo de arrastar-e-largar do botão direito do rato:

  1. selecciona os ficheiros ou pastas que queres mover

  2. Arrasta-os com o botão direito para a nova localização no interior da cópia de trabalho

  3. Larga o botão direito do rato

  4. No menu que surge selecciona Menu de ContextoSVN Mover para aqui iten(s) com controlo de versões

Submeter a pasta pai

Visto que renomeações e movimentos são executados como uma remoção seguida por uma adição, deverás submeter a pasta pai do ficheiro renomeado/movido para que a parte removida do renomeado/movido seja apresentado na caixa de diálogo submeter. Se não submeteres a parte removida do renomeado/movido irá ficar para trás no repositório, e quando os teus colegas actualizarem, o ficheiro antigo não será removido. i.e. eles terão ambos, o antigo e as novas cópias.

Tu deves submeter a pasta renomeada antes de alterar qualquer dos ficheiros dentro dessa pasta, senão a tua cópia de trabalho pode ficar realmente baralhada.

Outra maneira de mover ou copiar ficheiros, é usar os comandos de copiar/cortar do Windows. Selecciona os ficheiros que queres copiar, clica com o botão direito e escolhe a partir do menu de contexto do explorador Menu de ContextoCopiar. Então navega para a pasta destino, clica com o botão direito e escolhe TortoiseSVNColar. Para mover ficheiros, escolhe Menu de ContextoCortar em vez de Menu de ContextoCopiar.

Podes também usar o navegador de repositório para mover itens no mesmo. Consultar “O Navegador de Repositório” para saberes mais.

Não SVN Mover Externos

Não deverás usar os comandos TortoiseSVN Mover ou Renomear numa pasta que foi criada usando svn:externals. Esta acção teria como causaria a remoção do item externo do seu repositório pai, provavelmente irritando muitas outras pessoas. Se necessitas de mover uma pasta de externos, deverás usar um vulgar mover de linha de comando (shell), e então ajustar as propriedades svn:externals das pastas pai de origem e destino.

Lidando com conflitos de maiúsculas e minúsculas no nome do ficheiro

Se o repositório já contém dois ficheiros com o mesmo nome, diferindo apenas nas miúsculas e minúsculas (e.g. TEST.TXT e test.txt), não conseguirás actualizar ou SVN exportar a pasta pai num cliente Windows. Enquanto o Subversion suporta nomes de ficheiros sensíveis a miúsculas e minúsculas, o Windows não.

Isto por vezes acontece quando duas pessoas submetem, a partir de cópias de trabalho separadas, ficheiros que por acaso têm o mesmo nome mas com uma diferença de maiúsculas e minúsculas. Pode também acontecer quando os ficheiros são submetidos a partir de um sistema, com um sistema de ficheiros sensível a maiúsculas e minúsculas, como o Linux.

Nesse caso tens de decidir qual o que queres manter e remover (ou alterar o nome) do outro no repositório.

Prevenindo dois ficheiros com o mesmo nome

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.

Reparando Renomeações de Ficheiros

Por vezes o teu IDE amigável irá renomear ficheiros por ti como parte de um processo de refactoração, e claro não irá avisar o Subversion. Se tentares submeter as tuas alterações, o Subversion irá ver o velho ficheiro como desaparecido e o novo como ficheiro não versionado. Poderias apenas adicionar o ficheiro ao controlo de versões, mas assim perderias a sua história, já que o Subversion não sabe que ambos os ficheiros estão relacionados.

Uma melhor maneira será, notificar o Subversion de que esta alteração é na realidade uma alteração de nome, e poderás faze-lo dentro das caixas de diálogo Submeter e Verificar alterações. Simplesmente selecciona ambos os ficheiros, o com nome antigo (em falta) e o com o novo nome (não versionado), e usa Context MenuReparar movimento para emparelhar os dois ficheiros como uma renomeação.

Removendo Ficheiros Não Versionados

Normalmente tu configuras a tua lista de ignorados tal que todos os ficheiros gerados sejam ignorados pelo Subversion. Mas se queres limpar todos esse itens ignorados de modo a produzir uma versão limpa? Por norma tu inserias isso na tua makefile, mas se quiseres depurar a tua makefile ou alterar o sistema de build, será útil ter uma maneira de limpar a casa.

O TortoiseSVN disponibiliza tal opção usando Menu de Contexto EstendidoRemover itens sem controle de versão.... Tens de manter premida a tecla Shift enquanto clicas com o botão direito na pasta, no painel de lista do explorador (painel direito) de modo a veres isto no menu de contexto estendido. Esta acção irá abrir uma caixa de diálogo que listará todos os ficheiros não versionados em qualquer ponto da tua cópia de trabalho. Podes então seleccionar ou desseleccionar os itens a remover.

Quando tais itens são removidos é usando o cesto de reciclagem para que no caso de te enganares e removeres um ficheiro que deveria estar versionado, poderes ainda recuperá-lo.

TortoiseSVN homepage