LoginSignup
0
1

More than 3 years have passed since last update.

叩くだけでSVNリポジトリにaddとcommitしてくれるbat書いたのでメモ

Last updated at Posted at 2019-12-31

実行するだけでaddとcommitまでしてくれます。

バックアップ用途でsvnリポジトリを作ったときに書いたbat(と言いつつ中身はPowerShell)。
似たような要件があった時に使えそうなので残しておくことにしました。

@setlocal enabledelayedexpansion&set a=%*&(if defined a set a=!a:"=\"!&set a=!a:'=''!)&powershell/c $i=$input;iex ('$i^|^&{$PSCommandPath=\"%~f0\";$PSScriptRoot=\"%~dp0";#'+(${%~f0}^|Out-String)+'} '+('!a!'-replace'[$(),;@`{}]','`$0'))&exit/b

$targetFiles = @(svn status)
if ($targetFiles.Length -le 0) {
    echo "No files changed."
    exit
}

echo "$($targetFiles.Length) files changed."

foreach($file in $targetFiles) {
        if ($file.StartsWith("?")) {
                svn add $file.Remove(0, 1).Trim()
        } elseif ($file.StartsWith("!")) {
                svn delete $file.Remove(0, 1).Trim()
        } else {
                echo $file
        }
}

$dateStr = (Get-Date).ToString("yyyyMMdd-HHmmss")
svn commit --message "${dateStr}"

世代管理対象外のファイル(svn statusでファイル名の前に?とつくやつ)が現れたら
問答無用でsvn addするようになっているので、
特定のファイルを除きたい場合はif文の条件をイジる必要があります。

参考

バッチファイルにPowerShellスクリプトを埋め込む 標準入力対応版
PowerShellで戻り値が配列かどうか不定なコマンドレットを必ず配列で処理する方法

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1