开发者

Is there a way when creating new SVN repositories for the client (tortoisesvn) to create the branches, tags and trunk folders automaticlly?

开发者 https://www.devze.com 2022-12-16 13:55 出处:网络
I\'m using tortoisesvn to create the repositories and wondered if there was a way it could automatically create a skeleton directory structure within the repository?

I'm using tortoisesvn to create the repositories and wondered if there was a way it could automatically create a skeleton directory structure within the repository?

I need this as I'm going to allow other people in the team to set-up new repositories and 开发者_StackOverflow社区I need to make it as simple as possible and minimise mistakes. I would like the tags, branches and trunk directories to be created automatically.


You can write a script (in the language of your choice) that creates the repository and commits the predefined directory structure, using the svn command line client.


Make a script. If you are on Windows, a bat. On Linux etc, an bash.


I would suggest the following approach:

  1. create an empty repository
  2. check out a working copy of that empty repository
  3. add trunk/branches/tags folders
  4. set properties on those folders (e.g., if you're using TSVN you might want to set the tsvn:minlogsize and/or the tsvn:autoprops properties)
  5. commit those folders
  6. run svnadmin dump path/to/Repo > templaterepo.dmp

Now you have a template repository with some settings and folders pre-set.

All you need now is a script which does:

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

and you're done. But don't forget to pass the --ignore-uuid param to svnadmin load! Otherwise you'll end up with all your repositories having the same uuid - and that will cause problems!


As this is just a convention for organizing a Subversion repository and you don't actually want them at the top level all the time I doubt there is a way to do that automatically on repository creation. Usually you don't create multiple repositories per hour or so anyway.


This is how I automatically create a branches folder (assuming trunk already exists) so I can automatically branch. This is written in C# and uses the SharpSVN dll to do the work. Then it calls TortoiseSVN (not shown) to do the branch.

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);
}


Update for TortoiseSVN 1.7

When you create repository now, after creating you have window with two post-create choices

  • Create folder structure
  • Run repo-browser

First point is answer on question

Is there a way when creating new SVN repositories for the client (tortoisesvn) to create the branches, tags and trunk folders automaticlly?

0

精彩评论

暂无评论...
验证码 换一张
取 消