Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I put together a bunch of scripts to work with Subversion at the command line. Most of them just use the --xml option to put various information in object form. Here are a couple of examples:</p> <pre><code>function Get-SvnStatus( [string[]] $Path = ".", [string] $Filter = "^(?!unversioned|normal|external)", [switch] $NoFormat ) { # powershell chokes on "wc-status" and doesn't like two definitions of "item" [xml]$status = ( ( Invoke-Expression "svn status $( $Path -join ',' ) --xml" ) -replace "wc-status", "svnstatus" ) ` -replace "item=", "itemstatus=" $statusObjects = $status.status.target | Foreach-Object { $_.entry } | Where-Object { $_.svnstatus.itemstatus -match $Filter } | Foreach-Object { $_ | Select-Object @{ Name = "Status"; Expression = { $_.svnstatus.itemstatus } }, @{ Name = "Path"; Expression = { Join-Path ( Get-Location ) $_.path } } } | Sort-Object Status, Path if ( $NoFormat ) { $statusObjects } else { $statusObjects | Format-Table -AutoSize } } function Get-SvnLog( [string] $Path = ".", [int] $Revision, [int] $Limit = -1, [switch] $Verbose, [switch] $NoFormat ) { $revisionString = "" $limitString = "" $verboseString = "" if ( $Revision ) { $revisionString = "--revision $Revision" } if ( $Limit -ne -1 ) { $limitString = "--limit $Limit" } if ( $Verbose ) { $verboseString = "--verbose" } [xml]$log = Invoke-Expression "svn log $( $path -join ',' ) --xml $revisionString $limitString $verboseString" $logObjects = $log.log.logentry | Foreach-Object { $logEntry = $_ $logEntry | Select-Object ` @{ Name = "Revision"; Expression = { [int]$logEntry.revision } }, @{ Name = "Author"; Expression = { $logEntry.author } }, @{ Name = "Date"; Expression = { if ( $NoFormat ) { [datetime]$logEntry.date } else { "{0:dd/MM/yyyy hh:mm:ss}" -f [datetime]$logEntry.date } } }, @{ Name = "Message"; Expression = { $logEntry.msg } } | Foreach-Object { # add the changed path information if the $Verbose parameter has been specified if ( $Verbose ) { $_ | Select-Object Revision, Author, Date, Message, @{ Name = "ChangedPaths"; Expression = { $paths = $logEntry.paths.path | Foreach-Object { $_ | Select-Object ` @{ Name = "Change"; Expression = { switch ( $_.action ) { "A" { "added" } "D" { "deleted" } "M" { "modified" } "R" { "replaced" } default { $_.action } } } }, @{ Name = "Path"; Expression = { $_."#text" } } } if ( $NoFormat ) { $paths } else { ( $paths | Sort-Object Change | Format-Table -AutoSize | Out-String ).Trim() } } } } else { $_ } } } if ( $NoFormat ) { $logObjects } else { $logObjects | Format-List } } </code></pre> <p>I have these aliased to svns and svnl, respectively. I talk about a few others <a href="http://out-web.blogspot.com/2007/11/powershell-and-subversion.html" rel="noreferrer">here</a>.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload