Existe uma maneira de editar a mensagem de log de uma determinada revisão no Subversion? Eu acidentalmente escrevi o nome do arquivo errado na minha mensagem de confirmação, o que pode ser confuso mais tarde.
Eu já vi Como edito uma mensagem de confirmação incorreta no Git? , mas a solução para essa pergunta não parece ser semelhante para o Subversion (de acordo com svn help commit
).
pre-revprop-change
script que permite ao usuário confirmar modificar seu log por até 3 horas após a confirmação. Esse é um excelente compromisso entre flexibilidade / logs precisos e manutenção da fidelidade do repositório: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Respostas:
Essencialmente, você precisa ter direitos de administrador (direta ou indiretamente) no repositório para fazer isso. Você pode configurar o repositório para permitir que todos os usuários façam isso ou pode modificar a mensagem de log diretamente no servidor.
Veja esta parte do FAQ do Subversion (ênfase minha):
fonte
Quando você executa este comando,
e apenas no caso de você ver esta mensagem:
É porque o Subversion não permite modificar mensagens de log porque elas não são versionadas e serão perdidas permanentemente.
SVN hospedado em Unix
Vá para o diretório hooks no servidor Subversion (substitua ~ / svn / reponame pelo diretório do seu repositório)
Remova a extensão
Torne executável (não é possível executar chmod + x!)
Fonte
SVN hospedado no Windows
Os arquivos de modelo no diretório hooks não podem ser usados, pois são específicos para Unix. Você precisa copiar um arquivo em lotes do Windows
pre-revprop-change.bat
para o diretório hooks, por exemplo, o fornecido aqui .fonte
Aqui está uma variação útil que não vejo mencionada nas perguntas frequentes. Você pode retornar a mensagem atual para edição especificando um editor de texto.
fonte
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
fonte
Recentemente, fui encarregado disso também.
Queríamos permitir que nossos programadores modificassem apenas suas próprias mensagens de confirmação e restringissem quanto tempo eles têm permissão para fazê-lo. Decidimos que eles teriam permissão para modificar qualquer mensagem de log confirmada naquele dia, para corrigir erros de digitação etc.
Depois de ver alguns outros exemplos on-line, eu os hackeei juntos, estamos em um ambiente Windows, portanto, este é o nosso conteúdo de
pre-revprop-change.bat
:Editar: a ideia original para isso veio deste tópico :
fonte
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
, tive que mudar para aspas duplas nas duas variáveis. (Você não acreditaria quanto tempo demorou para descobrir.) Caso contrário, obteria coisas como "== '02' é inesperado neste momento" (no segundo dia do mês). Meu lote-fu não é forte o suficiente para saber por que isso acontece, mas, caso mais alguém tenha problemas estranhos, isso pode ajudar.No Windows, usando o cliente Tortoise SVN:
Se não funcionar, pode ser devido à maneira como o SVN no servidor está configurado, leia outras respostas aqui.
fonte
Se você estiver usando um IDE como o eclipse, poderá usar esse caminho fácil.
Nisso
right click on the revision id for your commit and select 'Set commit properties'
.Você pode modificar a mensagem como quiser daqui.
fonte
Se o seu repositório ativar a configuração de propriedades de revisão por meio do gancho de pré-revisão de alteração, você poderá alterar as mensagens de log com muito mais facilidade.
Ou no TortoiseSVN, AnkhSVN e provavelmente em muitos outros clientes do subversion, clicando com o botão direito do mouse em uma entrada de log e depois em 'alterar mensagem de log'.
fonte
O FAQ do Subversion cobre isso, mas usa muitos termos indefinidos confusos, como
REPOS_PATH
sem dar exemplos reais.Pode levar algumas tentativas para fazê-lo funcionar, então salve sua mensagem de confirmação atualizada em um arquivo. Ao contrário dos
svn-commit.tmp
arquivos, o Subversion não preservará sua digitação se houver algum problema.No seu diretório de trabalho, execute
svn propedit -r N --revprop svn:log
para editar a mensagem de confirmação. Se isso funcionar, ótimo! Mas provavelmente não, porque a
svn:log
propriedade revision não possui versão e o Subversion, por padrão, impedirá que você a substitua, seja com o script hookpre-revprop-change
ou com uma mensagem de erro de que você não possui esse tipo de gancho.Para alterar os ganchos, você precisa acessar o sistema de arquivos no qual o repositório está hospedado.
svn info
lhe dirá a raiz do repositório. Suponha que seja~/svnrepo
.cd
para~/svnrepo/hooks
pre-revprop-change
oupre-revprop-change.bat
script? Nesse caso, comente temporariamente a parte que interrompe se você tentar alterarsvn:log
.Caso contrário, no Windows, crie um arquivo em branco chamado
pre-revprop-change.bat
. Aqui está uma maneira de fazer isso:Caso contrário, no Unix, execute
Na cópia de trabalho, execute
svn propedit -r N --revprop svn:log
novamente~/svnrepo/hooks/svn-revprop-change
(.bat
)fonte
Encontrei uma boa implementação do gancho pré-rev-prop-change do lado do servidor no svnforum: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -shell-script-permite-comissários-para-alterar-próprio-log-dentro de x-horas
Implementa
Pegue a partir daí e edite à vontade. Prefiro não copiá-lo aqui, pois não sou o autor original e não há nenhum aviso de direitos autorais que me permita fazê-lo.
fonte