Git基础教程

前言

工作中必然会接触到代码版本管理工具,它有效地提高了程序猿的代码管理效率,大大的节约了工作成本.其中,最常用的便是SVN和GIT两种版本管理工具.

SVN基础篇

钩子的用处

svn钩子的好处在于当用户提交前后触发的一些行为.按照具体的行为分为提交前的日志检查和提交后的代码部署

提交前日记检查

用户将数据提交到svn的时候需要填写提交的内容作为当前版本的日志记录.默认情况是不强制用户填写,但如果没有养成日志记录的习惯的话,版本控制的作用效果微乎其微.因为此时用户无法顺利的做版本管理和回溯.因此,我们需要做svn上做数据提交前的日志自检功能,强制用户做日志记录.这里用的钩子是pre-commit.

关于日志提交自检的钩子代码,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
rem SVN强制写注释的hooks脚本(Windows)
rem 文件名是: pre-commit.bat,放到repository/hooks目录下
setlocal
set SVN_BINDIR="这里填写VisualSVN Server的Bin目录"
set REPOS=%1
set TXN=%2
rem 检查日志信息不少于10个字符
%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
If %errorlevel% gtr 0 goto err
exit 0
:err
echo 提交时必须填写注释,并且不少于10个字符! 1>&2
exit 1

提交后自动部署

有些时候为了方便和服务器资源的利用,在一台服务器同时部署svn服务器和web服务器.将用户提交的数据部署到web路径下就可以正常访问.这样用户提交的代码可以很直观的显示出来.这样做确实很方便,当然其中也隐藏了一些小技巧.那就是利用svn的钩子实现代码自动部署.这里用到的钩子是post-commit.

关于代码自动化部署的钩子代码,如下所示:

1
2
3
4
5
6
7
@echo off
SET REPOS=%1
SET USER=%2
echo "Code Deployed at %date:~0,10% %time:~0,8%" >> 提交时的日志路径
SET SVN="这里填写VisualSVN Server的Bin目录/svn.exe"
SET DIR="待部署的站点根目录"
%SVN% update %DIR% --username 账号 --password 密码 --non-interactive

初学者可能无法一步到位,看看是否也踩到坑了.以下是一些总结,对Windows和Linux的都大同小异.主要是执行权限和目录路径不规范.

  • 提示 svn: E020024: Error resolving case.可能是指定的目录不合法,特别是windows下的路径分隔符是反斜杠(“\“),在指定的字母之前是有转义功能.此时的反斜杠就是转义符,不再是目录路径分隔符了.

最简单的做法就是更换目录路径,避免转义符.

  • 手动执行改文件代码能正常部署到指定的站点,但提交数据的时候却无法自动部署.全程没有发现报错,就算报错也看不到.这个问题,明显就是Visual SVN Server服务的执行权限不足.

简单操作 win+R 运行 services.msc 找到visual svn server 服务 右键属性 登陆面板 设置桌面交互或者管理员权限再试.

GIT基础篇

思考

参考资料

文章目录
  1. 1. 前言
  2. 2. SVN基础篇
    1. 2.1. 钩子的用处
      1. 2.1.1. 提交前日记检查
      2. 2.1.2. 提交后自动部署
  3. 3. GIT基础篇
  4. 4. 思考
  5. 5. 参考资料