脚本运行环境: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= # Group Id
rootPath=/d/work/vss # VSS work path
index=
folderList=[] # Each folders
cd $rootPath
for i in $(ls $rootPath)
do
echo $index $i
folderList[index]=$i
index=`expr $index + `
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

通过Shell脚本将VSS项目批量创建并且提交迁移至Gitlab的更多相关文章

  1. shell脚本实例-while实现批量创建用户

    #!/usr/bin/bash while read line #读取一行结果 do if [ ${#line} -eq 0 ];then #如果有空行的话就跳过这次循环 contiune fi us ...

  2. 编写shell脚本让springboot项目在CentOS中开机自启动

    springboot项目部署在CentOS系统上时,如果遇到停电关机,公司的实施人员就得跑到甲方现场重新启动项目并测试,很是麻烦,这里探讨如何编写shell脚本控制springboot项目开机时自动启 ...

  3. 在shell脚本里使用sftp批量传送文件

    转至:https://blog.csdn.net/istronger/article/details/52141530?utm_medium=distribute.pc_relevant.none-t ...

  4. 编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可

    文件名:service-user.sh 文件内容: ##shell脚本的头文件必须有#!/bin/sh ##再次配置java环境变量以防报其他错误## java env#jdk安装目录export J ...

  5. linux下使用shell脚本自动化部署项目

    在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...

  6. 如何在shell脚本里使用sftp批量传送文件(二)

    原文链接:http://bbs.chinaunix.net/archiver/tid-508290.html 主要步骤如下: 1.为运行shell脚本的本地用户生成密钥对2.将其中的公钥分发到sftp ...

  7. Linux shell 脚本攻略之批量重命名

    摘自:<Linux shell 脚本攻略>

  8. 利用shell脚本生成CHANGELOG.md(包含git提交规范)

    前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...

  9. eclipse中maven多模块项目的创建、提交和检出

    1.创建父项目:maven项目.创建完成后删除src目录:删除项目属性java builder中的src目录. 2.在父项目中创建maven module子项目. 3.修改pom文件,添加依赖,修改g ...

随机推荐

  1. [LeetCode] Soup Servings 供应汤

    There are two types of soup: type A and type B. Initially we have N ml of each type of soup. There a ...

  2. laravel之模型操作

    首先在App下创建模型,一个模型对应着一个表: 2.创建好模型之后,使用控制器来操作模型 先使用模型 创建方法来使用模型(记得要添加路由)

  3. 1、react-native中expo的真机测试字体不加载的坑

    native-base的字体问题Roboto_medium 把native-base中的Fonts文件夹放到项目的根目录. import {Font,AppLoading} from 'expo'; ...

  4. iOS—使用picker View

    iOS—使用picker View 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置 ...

  5. 输入URL地址到页面加载完成 过程

    在浏览器的地址栏中输入URL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去访问服务器上的1.jsp这个web资源的过程 1.浏览器根 ...

  6. c#4.8-4.11学习总结

    4.8讲的是static 关键字.它用于修饰类 ,字段 ,属性,方法和构造方法等.被它修饰的类称为静态类,成员称为静态成员.  先说静态字段,它是普通字段前面加个static,它不属于任何对象,只属于 ...

  7. 【转】tars源码漫谈第1篇------tc_loki.h (牛逼哄哄的loki库)

    loki库是C++模板大牛Andrei写的, 里面大量运用模板的特性, 而tc_loki.h借用了loki库的部分代码, 形成了一个基本的文件tc_loki.h, 来看看: #ifndef __TC_ ...

  8. RuntimeError: implement_array_function method already has a docstring

    根源:Numpy/Scipy/Pandas/Matplotlib/Scikit-learn 出现冲突 解决办法: pip uninstall scikit-learn pip uninstall ma ...

  9. mysql--表数据操作

    查询: 简单查询 ####查询的字段必须在表中存在 #### 对查询出来的数据进行修改时,不会修改原来的数据,只是修改了可视化的,我们看到的数据. # 查一个数据 select 字段名 from 表名 ...

  10. less的使用(好文章)

    好文章链接:30分钟学会less 自己总结一下这篇文章中的几个关键字:变量.混合.函数.嵌套.@import 下面贴上自己照着上面写的一些代码: <template> <div cl ...