PowerShell SVN 添加文件并以指定时间和用户提交文件

// 文件:使用说明.txt
// 用途:批量上传 SVN 脚本的说明
// 适用脚本版本:2016-07-12

1、填写《文件提交顺序表.xlsx》,全部填写完成后按时间升序排列(如果时间形如:2016-3-2 9:2:12,要写成 2016-03-02 09:02:12,以免 excel 排序不准确。排序分列以后,就无所谓了)。升序排列后,拆分时间列,分为“日期”列和“时间”列。可先填写“原始整理表格”,然后复制到“排序整理后表格”里进行各项操作,以免出错又要重新填写一遍。

2、将在表格中得到的 6 列数据,复制到“1.txt”中。同一行的相邻两个数据之间,用 \t 作为分隔符(“\t”是不可见字符,一般默认复制过来,就是用 \t 分割的,不用处理,虽然看起来比较像空格)

3、在对应的 svn 根目录下,运行 autoAddCommit.ps1。脚本将从 1.txt 中读取数据,按 \t 作为分隔符切割每行数据,向 svn 进行提交。

4、示例文件见本文件夹。使用时注意修改脚本中的行数,即第 9 行的“127”,改成实际的条目行数

PowerShell 脚本

# 文件名:autoCommit.ps1
# 用途:为了批量上传 svn

# 读取文件内容
$line = get-content 1.txt

# 逐行解析文件
for($i = 0; $i -lt 5; $i++)
{
    # 用 tab 作为分隔符
    $tokens = $line[$i].split("`t")

    # 判断和上一行相比时间是否变化了
    if(($date -eq $tokens[0]) -and ($time -eq $tokens[1]))
    {
        $changeTime = 0
    }
    else
    {
        $changeTime = 1
    }

    # 判断和上一行相比用户是否变化了, 同时更新“用户名密码”字符串
    if($username -eq $tokens[2])
    {
        $changeUser = 0
    }
    else
    {
        $changeUser = 1
    }

    # 如果用户变化了或者时间变化了
    # 而且不是第一行数据,那么就提交一次
    if(($changeTime -eq 1) -or ($changeUser -eq 1))
    {
        if($i -ne 0)
        {
            svn commit -m $commitMsg --username $username --password $password  
        }
    }

    # 更新本行变量
    $date = $tokens[0]
    $time = $tokens[1]
    $username = $tokens[2]
    $password = $tokens[3]
    $filepath = $tokens[4]
    $commitMsg = $tokens[5]

    # 如果时间应该变化,则修改系统时间
    if($changeTime -eq 1)
    {
        set-date  $date
        set-date  $time
    }

    # 发出 svn add 命令
    svn add $filepath 
}

# 提交最后的一批数据
svn commit -m $commitMsg --username $username --password $password  

文件提交顺序表:

时间 用户 密码 完整路径文件名 更新日志
2013.01.03 12.23.43 admin admin D:/test/file1.txt 提交file1
2013.02.03 12.23.43 admin admin D:/test/file2.txt 提交file2

填写完并按时间排序后,将时间列以空格分列。拆成日期和时间两部分。

你可能感兴趣的:(脚本,PowerShell,SVN,powershell,svn,脚本)