您的位置:首页 > 运维架构 > Shell

通过Shell脚本将VSS项目批量创建并且提交迁移至Gitlab

2017-11-24 23:56 886 查看
脚本运行环境:Git Bash

系统环境:Windows 10 Pro 1709

VSS版本:Microsoft Visual SourceSafe 2005

我的VSS工作目录结构如下:

D:\work\

--vss

----project1

------src

------README.md

------ ......

----project2

------doc

------src

------README.md

------ ......

----project3

------ ......

脚本代码:

#!/bin/bash

git config --global user.name "Allen"
git config --global user.email allen@domain.com

# Init params
namespace=VssProjects # Group Name
namespaceId=10 # Group Id
rootPath=/d/work/vss # VSS work path
index=0
folderList=[]

# Each folders
cd $rootPath
for i in $(ls $rootPath)
do
echo $index $i
folderList[index]=$i
index=`expr $index + 1`
done

# Print folders length
echo ${#folderList[@]}

# Git Init
for dirName in ${folderList[*]}
do
workPath=$rootPath/$dirName #项目工作目录
projectName=$dirName # 项目名称
data='{"name":"replacement","visibility":"private","namespace_id":namespaceId,"path":"replacement"}' # 待提交的JSON数据
postData=${data//replacement/$projectName} # 全部替换
postData=${data/namespaceId/$namespaceId} # 只替换一次
echo $postData

# Gitlab Create Projects
curl --header "Private-Token: your private token" \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-X POST \
-d $postData \ http://git.domain.com/api/v4/projects 
# Git repository init & push
cd $workPath
git init
git remote add origin http://username:password@domain.com/$namespace/$projectName.git touch README.md
git add README.md
git add .
git commit -m "Init version"
git push -u origin master
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: