Eu queria editar um comentário de log no navegador do repositório e recebi uma mensagem de erro informando que não existe um gancho de alteração pré-revprop para o repositório. Além de ter um nome assustador, o que é um gancho de mudança pré-revisão e como criá-lo?
168
Respostas:
Basicamente, é um script que é iniciado antes que a propriedade não versionada seja modificada no repositório, para que você possa gerenciar com mais precisão o que está acontecendo no seu repositório.
Existem modelos na distribuição do SVN para diferentes ganchos, localizados no subdiretório / hooks (* .tmpl que você precisa editar e renomear, dependendo do sistema operacional, para ativar).
fonte
svnsync
espelho, o script padrão precisará ser alterado, pois permite apenas alterações no svn: log. O Svnsync muda mais do que isso, então simplesmente coloquei umexit 0
lá para permitir todas as alterações de propriedade (já que isso é um espelho apenas para mim).pre-revprop-change
o no mesmo diretório e torne-o executável para o usuário do servidor da web (no Linux).Para Windows, aqui está um link para um arquivo em lotes de exemplo que permite apenas alterações na mensagem de log (não em outras propriedades):
http://ayria.livejournal.com/33438.html
Basicamente, copie o código abaixo em um arquivo de texto e nomeie-o
pre-revprop-change.bat
e salve-o no\hooks
subdiretório do seu repositório.fonte
Para o Linux permitir a edição de um comentário de log,
pre-revprop-change.tmpl
nohooks
diretório do seu repositóriopre-revprop-change
www-data
)Editado: (graças a lindes)
0
para o tipo de edições que deseja permitir.fonte
Aqui está o link para a pergunta de estouro de pilha com muitos ganchos comuns Tipos comuns de ganchos de subversão , incluindo a fonte original do
pre-revprop-change
gancho para Windows postada aqui.Você deve consultar lá, pois eles podem melhorar com o tempo.
fonte
Obrigado #patmortech
E adicionei seu código que "apenas o mesmo usuário pode alterar o código".
fonte
O nome do script de gancho não é tão assustador se você conseguir decifrá-lo: é um gancho de alteração de propriedade antes da revisão . Em resumo, o objetivo do
pre-revprop-change
script hook é controlar as alterações das propriedades não revisadas (de revisão) e enviar notificações (por exemplo, enviar um email quando a propriedade de revisão for alterada).Existem 2 tipos de propriedades no Subversion:
svn:needs-lock
esvn:mime-type
) que podem ser definidas em arquivos e diretórios,svn:log
esvn:date
) que são definidas nas revisões do repositório .As propriedades com versão têm histórico e podem ser manipuladas por usuários comuns que têm acesso de leitura / gravação a um repositório. Por outro lado, propriedades não versionadas não têm histórico e servem principalmente para fins de manutenção. Por exemplo, se você confirmar uma revisão, ela será
svn:date
recebida imediatamente com a hora UTC de sua confirmação,svn:author
com seu nome de usuário esvn:log
com sua mensagem de log de confirmação (se você especificou alguma).Como já especifiquei, o objetivo do
pre-revprop-change
script hook é controlar as alterações nas propriedades da revisão. Você não deseja que todos os que têm acesso a um repositório possam modificar todas as propriedades de revisão, portanto, alterar as propriedades de revisão é proibido por padrão. Para permitir que os usuários alterem propriedades, é necessário criar umpre-revprop-change
gancho.O gancho mais simples podem conter apenas uma linha:
exit 0
. Isso permitirá que qualquer usuário autenticado altere qualquer propriedade de revisão e não deve ser usado em ambiente real. No Windows, você pode usar script em lote ou script baseado no PowerShell para implementar alguma lógica dentro dopre-revprop-change
gancho.Esse script do PowerShell permite alterar
svn:log
apenas a propriedade e nega mensagens de log vazias.Esse script em lote permite que apenas o usuário "svnmgr" altere as propriedades da revisão:
fonte
Para usuários de PC: A extensão .bat não funcionou para mim quando usada no processamento do Windows Server. Usei o VisualSvn como Django Reinhardt sugeriu, e ele criou um gancho com uma extensão .cmd.
fonte
(Essa solução certamente tem desvantagens, pois nada é verificado / proibido. Mas, para o meu caso - um repositório local que apenas estou usando - parece funcionar.)
fonte