Есть ли способ при создании новых репозиториев SVN для клиента (tortoisesvn) для автоматического создания веток, тегов и внешних папок? - PullRequest
2 голосов
/ 18 января 2010

Я использую tortoisesvn для создания репозиториев и спрашиваю себя, можно ли было как-то автоматически создать каркасную структуру каталогов внутри репозитория?

Мне это нужно, так как я собираюсь позволить другим людям в команде создавать новые репозитории, и мне нужно сделать это как можно более простым и минимизировать ошибки. Я бы хотел, чтобы теги, ветви и каталоги стволов создавались автоматически.

Ответы [ 6 ]

2 голосов
/ 18 января 2010

Вы можете написать скрипт (на выбранном вами языке), который создает хранилище и фиксирует предопределенную структуру каталогов, используя клиент командной строки svn.

1 голос
/ 18 января 2010

Я бы предложил следующий подход:

  1. создать пустой репозиторий
  2. проверить рабочую копию этого пустого хранилища
  3. добавить папки ствола / веток / тегов
  4. установить свойства для этих папок (например, если вы используете TSVN, вы можете установить свойства tsvn: minlogsize и / или tsvn: autoprops)
  5. зафиксировать эти папки
  6. пробег svnadmin dump path/to/Repo > templaterepo.dmp

Теперь у вас есть хранилище шаблонов с некоторыми настройками и предустановленными папками.

Все, что вам сейчас нужно, это скрипт, который делает:

  1. svnadmin create path / to / new / Repo
  2. svnadmin load --ignore-uuid path / to / new / repo

и все готово. Но не забудьте передать --ignore-uuid параметр svnadmin load! В противном случае все ваши репозитории будут иметь одинаковый uuid - и , что вызовет проблемы !

1 голос
/ 18 января 2010

Сделай скрипт. Если вы на Windows, летучая мышь. В Linux и т. Д. Bash.

0 голосов
/ 19 апреля 2013

Обновление для TortoiseSVN 1.7

Когда вы создаете репозиторий сейчас, после создания у вас появляется окно с двумя вариантами пост-создания

  • Создание структуры папок
  • Запуск репо-браузер

Первая точка - ответ на вопрос

Repo-creation dialogue

0 голосов
/ 19 апреля 2013

Это - то, как я автоматически создаю папку branches (при условии, что trunk уже существует), таким образом я могу автоматически переходить. Это написано на C # и использует DLL SharpSVN, чтобы сделать работу. Затем он вызывает TortoiseSVN (не показан), чтобы выполнить ветвь.

using SharpSvn;

SvnClient client = new SvnClient();
Uri trunkUri = client.GetUriFromWorkingCopy(trunkPath);
if (trunkUri.Segments.Last() != "trunk/")
{
   MessageBox.Show(String.Format("Will skip {0}, because first trunk path does not end in \"trunk\\\"",trunkPath));
    return;
} else {
    System.UriBuilder builder = new UriBuilder(trunkUri);
    builder.Path += "../branches/";
    Uri    parent = builder.Uri;

    System.Collections.ObjectModel.Collection<SvnInfoEventArgs> info;
    bool result = client.GetInfo(SvnTarget.FromUri(parent), new SvnInfoArgs { ThrowOnError = false }, out info);
    if (result == false)
    {

       SvnCreateDirectoryArgs args = new SvnCreateDirectoryArgs();
       args.CreateParents = true;
       args.ThrowOnError = true;
       args.LogMessage = String.Format("Creating new branch \"{0}\"", branchName);
       client.RemoteCreateDirectory(parent, args);
    }
    builder.Path += branchName;
    Uri newUrl = builder.Uri;
    TortoiseSVN.Copy(trunkPath, newUrl.ToString(), comment);
}
0 голосов
/ 18 января 2010

Поскольку это просто соглашение об организации хранилища Subversion, и вы на самом деле не хотите, чтобы они находились на верхнем уровне все время, я сомневаюсь, что есть способ сделать это автоматически при создании хранилища. Обычно вы не создаете несколько репозиториев в час или около того.

...