2009-11-03 3 views
0

Je souhaite remplacer le nom d'utilisateur SVN par défaut par un nouveau nom. J'ai essayé la solution suggérée dans ce lien (How do I change the default author for accessing a local SVN repository?), mais cela ne fonctionne pas. J'ai un accès au référentiel SVN via la ligne de commande et Aptana en utilisant le client Subversive.Comment modifier l'auteur par défaut pour accéder à un référentiel SVN?

+0

@Rohit: Undeleted mon post précédent, il semble que cela fait partie de votre problème après tout :-) – RedGlyph

Répondre

3

Modifier: Cette réponse est sur la façon de modifier un auteur dans les journaux, pas comment définir l'auteur par défaut. Je vais laisser la solution ici car elle pourrait encore aider à défaire les derniers commits, si l'auteur n'était pas le bon.

Édition 2: exemple de script de raccordement et informations pour les fichiers .bat.


Vous ne donnez pas beaucoup de détails que nous allons devoir deviner, et ma première pensée serait sur le script crochet qui est appelé à valider le changement. Dans ce cas, votre client n'est pas le problème, c'est un problème de configuration du serveur.

Assurez-vous que le script de crochet pre-revprop-change (dans votre répertoire <repository>/hooks, sur le serveur) est exécutable par le serveur et permet un changement d'auteur.

Voici un exemple en C:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
int i; 
char *repos = argv[1]; 
char *rev = argv[2]; 
char *user = argv[3]; 
char *propname = argv[4]; 
char *action = argv[5]; 

if (!strcmp(action, "M") && !strcmp(propname, "svn:log")) return 0; 
if (!strcmp(action, "M") && !strcmp(propname, "svn:author")) return 0; 
fprintf(stderr, "Changing revision properties other than svn:log or svn:author is prohibited"); 
return 1; 
} 

Si votre serveur SVN est sous Linux, vous pouvez également renommer simplement le fichier pre-revprop-change.tmpl qui est créé automatiquement à chaque dépôt de pre-revprop-change, et lui donner l'autorisation exécutable le serveur. Il devrait ressembler à ceci pour permettre à l'auteur et enregistrer les modifications:

#!/bin/sh 

REPOS="$1" 
REV="$2" 
USER="$3" 
PROPNAME="$4" 
ACTION="$5" 

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi 
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi 

echo "Changing revision properties other than svn:log or svn:author is prohibited" >&2 
exit 1 

Pour Windows:

@echo off 
REM pre-revprop-change.bat hook script 
if "%4" == "svn:log" exit /b 0 
if "%4" == "svn:author" exit /b 0 
echo "Changing revision properties %4% is prohibited" >&2 
exit /b 1 

si elle ne fonctionne pas, cela peut être dû à la COMSPEC ou les variables PATH ne pas avoir le bon des valeurs pour le compte du serveur ou des autorisations sur le script hook. Cochez cette case link for more details.

Il existe d'autres exemples de scripts de hook at CollabNet.

Plus de détails dans le livre en ligne Version Control with Subversion, et également here (consultez les sections suivantes).

+0

@RedGlyph: Mon référentiel est sur Windows XP et j'utilise SVN sur localhost. – RKh

+0

Ensuite, le plus facile est de compiler le code C et vérifier les autorisations de sécurité pour s'assurer que le compte du serveur peut l'exécuter. Si vous le compilez avec Cygwin, assurez-vous d'utiliser '-mno-cygwin' pour ne dépendre d'aucune bibliothèque Cygwin .dll. Vous could utilisez un script .bat, mais il est pas facile à installer (voir ici: http://stackoverflow.com/questions/1620490/post-commit-hook-run-as-what-user-in-svn). – RedGlyph

+0

@RedGlyph: N'existe-t-il pas de commande SVN simple que je puisse exécuter à partir de la ligne de commande. – RKh

3

Pour Eclipse (mais devrait fonctionner avec IDE basé sur Eclipse comme Aptana):

Dans les SVN Repository vues sur la SVN Perpective, allez à la Location Properties du dépôt souhaité et modifier les informations d'identification dans la boîte Authentication.

Cela devrait changer votre auteur à partir de maintenant.

Si vous souhaitez réécrire l'historique, vous devez utiliser quelque chose comme la solution de RedGlyph.

+0

Oups, à droite. J'ai peur d'avoir mal compris la question, j'ai supprimé ma solution OT ;-) – RedGlyph

+0

@Steve: Merci. En fait, je viens de trouver qu'il existe une option "override" dans le plugin Aptana Subversive pour remplacer le nom par défaut. Il fonctionne, mais je suis maintenant devient erreur: SVN: opération « Set auteur de révision » terminée avec l'erreur: Désactivé fonction du référentiel svn: référentiel n'a pas été activé pour accepter les modifications de propriétés de révision; Demander à l'administrateur de créer un crochet de pré-modification-modification Fonction de référentiel désactivé svn: Le référentiel n'a pas été activé pour accepter les modifications de révision; demander à l'administrateur de créer un crochet avant revprop changement – RKh

+0

@Rohit: c'est ce que j'appelle * réécrire l'histoire *. L'option 'override' est quelque chose qui essaie de mettre à jour l'auteur ** après ** la validation (c'est-à-dire la réécriture). Pour cela, vous devez utiliser des crochets. –

0

Subversion 1.4.x n'a que svn: log autorisé dans le fichier par défaut pre-revprop-change. Cela peut poser problème lors de l'utilisation d'Eclipse avec le plugin svn Subversive.

Pour résoudre l'erreur magique indiquant que

Changing revision properties other than svn:log is prohibited

après les commandes svn. Pour résoudre ce problème particulier ajouter

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi 

de la solution RedGlyph ci-dessus.

Questions connexes