-
Notifications
You must be signed in to change notification settings - Fork 2
/
New-SvnStruct.ps1
43 lines (37 loc) · 1.55 KB
/
New-SvnStruct.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# CreateSvnStruct v1.00
# Copyright © 2008 by James Kovacs
# All rights reserved.
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
# ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND/OR FITNESS FOR A
# PARTICULAR PURPOSE.
# Check usage
If($args.Length -ne 1) {
Write-Host "Usage: .\CreateSvnRepo.ps1 <RepoUrl>"
Write-Host " where RepoUrl is the base url for your repository"
Write-Host " in which trunk, tags, and branches will be created."
Write-Host "N.B. RepoName cannot accept a file path."
Write-Host " CreateSvnRepo assumes that svn is in your path."
Exit(0)
}
# Set up variables needed by script
$repoUrl = $args[0]
$tempPath = [System.IO.Path]::GetTempPath()
$tempDirName = [System.IO.Path]::GetRandomFileName()
$workingCopy = Join-Path $tempPath $tempDirName
$dirNames = 'branches', 'tags', 'trunk'
# Create a temporary working copy so we can commit initial setup in one go
Write-Host "Creating temporary working copy in $workingCopy"
New-Item -path $tempPath -name $tempDirName -type directory
svn checkout --non-interactive $repoUrl $workingCopy
Write-Host "Creating directories in working copy"
ForEach ($dirName in $dirNames) {
$path = Join-Path $workingCopy $dirName
svn mkdir $path
}
# Commit changes to the repository
Write-Host "Committing changes"
svn commit $workingCopy --message "Initial repository setup"
# Perform cleanup
Write-Host "Cleaning up working copy"
Remove-Item -path $workingCopy -recurse -force