Pergunta

Eu quero subversion para cometer um arquivo mesmo se é inalterada. Existe uma maneira de fazer isso?

Foi útil?

Solução

Se você quiser o conteúdo do arquivo para permanecer inalterado (o que significa que você não pode simplesmente mudar os espaços em branco como johnstok sugerido) você sempre pode mudar uma das propriedades no arquivo.

por exemplo.

svn propset dummyproperty 1 yourfile
svn commit yourfile

Isso irá executar uma consolidação sem ter que mudar o arquivo.

Apenas certifique-se que você não usar uma das propriedades especiais svn:. Qualquer outra coisa que deve ser ok.


Edit: Um número de outros cartazes têm perguntado por que alguém iria querer fazer isso -. Presumivelmente, as pessoas que têm marcado esta resposta para baixo também tiveram as mesmas preocupações

Eu não posso falar para o cartaz original, mas um cenário onde eu já vi isso usado é quando a tentativa de actividades sincronizar automaticamente em um repositório Visual Sourcesafe com um repositório Subversion.

Outras dicas

Como responder por que um gostaria de fazer commits forçados. Já vi casos em que alguém usou uma mensagem que estava errado ou pouco claras cometer. É bom se você pode executar um commit forçado, onde você pode corrigir esse erro. Dessa forma, o atualizada mensagem de confirmação vai para o repositório, para que ele não vai se perder.

Eu frigged esta apagando em seguida, re-adicionar o arquivo problemático. Não a melhor maneira de fazê-lo, e provavelmente quebrou o histórico de revisão, mas adequados meu fins.

A razão para querer fazê-lo: Arquivo foi um dos dois executáveis ??construídos da mesma fonte (com diferentes #defines set). Alteração menor de fonte significou um tinha mudado, não o fez. Eu queria gravar no histórico de revisão que eu tinha realmente atualizado para a versão mais recente (embora não houvesse nenhuma mudança).

Talvez o ponto de Morten Holdflod Møller que "o arquivo ainda será uma parte da nova revisão" cobriria esta indicação, mas acho que um log do arquivo inalterado não mostraram comentários para essa revisão.

Se é um arquivo de texto apenas adicionar algum espaço em branco, como um avanço de linha.

Respondendo a algumas pessoas que questionam isso deve ser possível: por algum motivo svn não reconhece as diferenças entre os arquivos doc, então eu gostaria de forçar cometer assim

Agora estou documentação passando de diretórios estáticos, para svn. arquivos são como UG_v1.2, UG_v1.3 etc. Então, só para manter a história, eu tomo 1.2, versão de remoção do nome de arquivo e adicionar e confirmá-lo para SVN. Então eu tomo a ver a partir do segundo, copiá-lo sobre o primeiro e quero cometê-lo e versão mais recente. tamanho do arquivo e alterações de data de criação (não mencionando o que está dentro do doc), mas reivindicações SVN é perfeitamente o mesmo arquivo desautorizando-me a cometer. Quando eu mudar manualmente o doc, svn vê o diferente. Diabos? :>

Eu não acho que isso é possível, mas antes de tudo por que você precisa fazer isso? Se um arquivo não é alterado não deve ser comprometido.

Se você realmente quer esse arquivo agrupado com outros arquivos em um commit você pudesse mudar algo menor dentro (adicionar um espaço, por exemplo).

A razão por que alguém quer cometer arquivo inalterado é mal-entendido sobre como reverter para uma versão anterior de um arquivo.

Por exemplo, pode-se reverter o index.html arquivo na revisão 680 por apenas atualizá-lo para uma revisão no passado, por exemplo, 650 :

svn update index.html -r 650

mas isso não resolve o problema, porque:

svn status -u index.html
        *      650   index.html
Status against revision:    680

diz svn claramente que index.html é modificado remotamente e você não pode cometê-lo, ou seja, que "pensa" que index.html é antigo e deve ser atualizado para uma revisão mais recente. Então, da próxima svn update vai trazer de volta index.html para a revisão 680 .

Para realmente reverter um arquivo que você deve mesclá-lo em ordem inversa:

svn merge -r 680:650 index.html

e, em seguida, cometê-lo svn ci -m "Reverted to r650" index.html

Na verdade, eu vim através de uma razão para fazer uma força cometer. Isso provavelmente não é a melhor prática, mas nós colocamos Truecrypt ( http://www.truecrypt.org/ ) volumes em SVN porque precisamos de manter um forte esquema de segurança em algum script shell pois ele contém informações confidenciais. Quando um volume TrueCrypt é criado, é estadias de dados binários a mesma, não importa o que você faz com ele. Então, na verdade, eu posso mudar o conteúdo do volume, mas o volume nunca aparece alterado.

Alterar a propriedade não irá forçar a cometer.

TortoiseSVN 1.4.5, Construir 10425-32 Bit, 2007/08/26 11:14:13

I have the same problem with a trueCrypt volume.

I added a new property (as suggested above) "forceCommit1" and them I was able to commit the volume file. but only the property was commited not the contents of the file.

I removed the file and added it again to the svn

I thought you could do it from the command line?

svn ci -force <filename>

I don't have a repository here to check that on, so I might be wrong.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top