Как мне изменить автора по умолчанию для доступа к репозиторию SVN?
-
13-09-2019 - |
Вопрос
Я хочу изменить имя пользователя SVN по умолчанию на новое имя.Я попробовал решение, предложенное по этой ссылке (Как мне изменить автора по умолчанию для доступа к локальному репозиторию SVN?), но это не работает.
У меня есть доступ к репозиторию SVN через командную строку и Aptana с использованием Subversive client.
Решение
Редактировать:Этот ответ посвящен тому, как изменить автора в журналах, а не как установить автора по умолчанию.Я оставлю решение здесь, поскольку оно все еще могло бы помочь отменить последние несколько коммитов, если бы автор был неправильным.
Правка 2:пример скрипта подключения и информация для файлов .bat.
Вы не даете много подробностей, так что нам придется гадать, и моя первая мысль была бы о скрипте hook, который вызывается для проверки изменения.В этом случае проблема не в вашем клиенте, а в проблеме конфигурации сервера.
Убедитесь, что сценарий перехвата pre-revprop-change (в вашем <repository>/hooks
directory, на сервере), исполняется сервером и допускает смену автора.
Вот пример на 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;
}
Если ваш SVN-сервер работает в Linux, вы также можете просто переименовать pre-revprop-change.tmpl
файл, который автоматически создается с каждым репозиторием для pre-revprop-change
, и предоставьте ему разрешение на выполнение для сервера.Это должно выглядеть примерно так, чтобы разрешить автору и регистрировать изменения:
#!/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
Для 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
если это не работает, это может быть связано с тем, что переменные COMSPEC или PATH не имеют правильных значений для учетной записи сервера, или это также могут быть разрешения в скрипте hook.Проверьте это ссылка для получения более подробной информации.
Есть и другие примеры скриптов-хуков в CollabNet.
Более подробная информация в Управление версиями с помощью Subversion онлайн-бронирование, а также здесь (проверьте следующие разделы).
Другие советы
Для Eclipse (но должен работать с IDE на основе Eclipse, такой как Aptana) :
В SVN Repository
взгляды на SVN Perpective
, просто зайдите в
Location Properties
нужного репозитория и измените учетные данные в Authentication
коробка.
Отныне это должно изменить вашего автора.
Если вы хотите переписать историю, вам нужно использовать что-то вроде решения RedGlyph.
В Subversion 1.4.x по умолчанию разрешен только svn: log pre-revprop-change
файл.Это может вызвать проблему при использовании Eclipse с Subversive svn plugin.
Чтобы устранить магическую ошибку, заявляющую, что
Изменение свойств редакции, отличных от svn:log, запрещено
после команд svn.Чтобы решить эту конкретную проблему, добавьте
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi
из решения RedGlyph выше.