利用VS编译生成事件实现代码及时提交到Git

Git是个好东西.

每次编译通过,都可能是一次重要的提交,但是不论是命令行还是GUI的提交都不一定能及时做到,

因为花费的时间和操作步骤有点多

(命令行4个,切到git目录,打开bash,add*,commit;

gitk的GUI操作步骤更多一些,未统计;

VS2017的git提交也需要3步,切到团队资源管理,输入文本,提交)

现在使用VS的生成事件脚本实现代码提交的提示和实现;

在确认是否提交时允许超时取消.

先贴代码:

set b=
echo Wsh.Echo CreateObject("Wscript.Shell").Popup("是否立即提交Git?超时5秒自动取消", 5, "提示框",vbOKCancel) >tmp1.vbs
echo Wsh.Echo InputBox("请在下面提交注释字符:", "Commit", "") >tmp2.vbs
for /f %%a in ('cscript tmp1.vbs //nologo //e:vbscript') do set "b=%%a"

if not %b%==1 (
del /q tmp1.vbs
del /q tmp2.vbs
exit
)
set d=""
for /f %%c in ('cscript tmp2.vbs //nologo //e:vbscript') do set "d=%%c"

del /q tmp1.vbs
del /q tmp2.vbs

cd ../../../
git add *
git commit  -m "commit:"%d%

exit

代码解释:

1:在默认目录生成tmp1.vbs,tmp.vbs两个脚本文件(路径可另行选择),用于弹窗获取是否提交git,提交注释文本;

2:弹窗查问用户是否立即提交git;

3:若不立即提交,删除vbs,退出脚本;

4:若立即提交,弹窗获取git的提交注释,作为commit的参数,注意这个参数返回值在用户取消提交时是"",用户也可能输入"",如果要支持取消,则增加if语句提前退出脚本,如果允许输入空字符串"",始终提交则应赋给或者追加非空字符串;

5:提交参数已得到,删除vbs文件;

5:cd切换到git目录;

6:使用git add *,git commit -m "注释"提交更改内容代码;

7:完成,退出脚本;

注意,这个脚本为了简单就使用git add *,并没有设定过滤,

如果你的代码中有要过滤的东西,请在git中提前配置,或者修改add的文件类型git add *.cs.

避免提交了一些不必要的多余文件.

 

下面放图:

编辑生成后事件:

利用VS编译生成事件实现代码及时提交到Git_第1张图片

编译后,触发生成后事件,询问用户是否立即提交.

利用VS编译生成事件实现代码及时提交到Git_第2张图片

 

若提交,请用户输入注释文本:

利用VS编译生成事件实现代码及时提交到Git_第3张图片

提交注视文本后,完成提交;

利用VS编译生成事件实现代码及时提交到Git_第4张图片

2019.03.25回顾以前的帖子发现这个脚本有问题,后来是发现第一个"> tmp1.vbs  "后面跟了一个无效字符,删去以后就正常了.

另外是"cd ../../../"进入Git目录,若没有创建git目录或者位置不对,脚本将执行失败,未能提交git.但VS编译能通过.

再另外是从网页复制下来的脚本分隔符是\n,在vs和notepad粘贴时不分行,建议用notepad++粘贴,确认分行正确,修改git仓库参数后再贴入VS.

你可能感兴趣的:(C#桌面工具)