Git 跨平台分析工具正式开源

来源:开源中国社区 作者:一路南漂
  

码云 作为一个免费提供私有仓库的代码托管平台,时常要考虑利用现有的资源支持更多的用户,而由于 Git 是一个分布式的版本控制系统,并且基于快照的存储特性,这会导致用户的存储库提交将变得非常大,所以服务器往往需要更多的硬件资源来支撑这些存储库的访问。

为什么需要 Git Analyze tool ?

我们知道 码云 对 Git 仓库的大小限制为 1GB,对文件的限制为 100MB,当文件大小超过 50MB 会提出警告。一部分用户很容易将生成的二进制文件添加到版本控制之中,当推送到 码云 上就被拒绝推送了。而且用户需要检查或者回退会感到非常麻烦,开发 Git Analyze 的目的也就是为了解决这些用户的烦恼。

具体来说,Git Analyze 是一个可以帮助用户检索出从哪一次提交引入了原始体积超过限制的文件。 git-rollback 则可以根据分支上的 commit 和从当前回退的版本数实现回滚,并且保留当前工作目录的文件不改变,用户可以重新创建提交。

怎么构建 Git Analyze tool ?

首先,任意平台都需要克隆代码:

 
1
 
git clone --recursive https://git.oschina.net/oscstudio/git-analyze.git

本项目依赖 CMake 构建,在 Windows 上,你可以从 下载符合你系统版本的 CMake,CMake 生成 Visual Studio 项目文件需要在环境变量中识别 Visual C++ 编译器的环境变量,所以你可以新建一个类似于下面的批处理代码。

 
1
 
2
3
4
@echo off
::Find CMake Path
call "%VS140COMNTOOLS%\VsDevCmd.bat" SET PATH=%PATH%;C:\Program Files\CMake\bin
cmd /k

其中 CMake 的安装路径可能有所差异.一切以实际为准。

启动命令行后,运行:

 
1
 
2
mkdir build cd build
cmake -G "Visual Studio 14" ..

然后执行:

 
1
 
msbuild git-analyze.sln /p:Configuration=Release cpack

然后运行安装程序安装即可。

或者可以使用 Visual Studio 打开项目文件。

对于 CMake 的集成,你同样可以使用作者的 Clangbuilder,只需要在 ClangbuilderUI 中选择相应的Visual Studio 版本,然后点击 Startup Env 按钮即可。

在 Linux 或者 Windows Subsystem for Linux (Bash on Windows) 中,你需要先安装 GCC G++ CMake 等工具。

 
1
 
mkdir build &&cd build &&cmake -DCMAKE_BUILD_TYPE=Release .. -DCMAKE_INSTALL_PREFIX=/opt/oscstudio &&make &&make install

怎么使用 Git Analyze tool ?

git-analyze 命令行参数:

 
1
 
2
3
4
5
6
7
8
9
OVERVIEW: GIT analyze tools
Usage: git-analyze <options>...] [--] [<pathspec>...] [<refs|branches> ...]
OPTIONS:
  -h [--help]      print usage and exit
  --limitsize      set analyze engine limit blob size
  --warnsize       set analyze engine warn blob size
  --timeout        set analyze engine lifycycle
  --who            show who is commit author
  --all            analyze will scanf all refs

【注】: (1)默认情况下,git-analyze 扫描当前目录的仓库的 HEAD 指向的分支,如果要扫描其他目录或者其他分支需要额外的设置参数,仓库目录可以是工作目录的根目录和裸仓库的目录,分支名可以使用引用或者本地分支名,二者相对顺序必须与下相同。

 
1
 
git-analyze /path/to/repo master

(2)其中 limitsize 和 warnsize 参数都是整数,单位是 MB 默认值为 100 MB 和 50 MB, timeout 单位是秒,可以不设置, 这几个都可以使用 --limitsize=100 或者 --limitsize 100 这样的格式。

(3)who 这个参数是一个开关,单命令行参数中存在 --who 时,扫描到大文件时将显示提交 作者 和 提交信息。

(4)all 这个开关如果开启时,将扫描所有的引用。

这些参数没有顺序要求。

git-analyze

关于Rollback 工具的使用

在 Git 中,git-rollback 实现 git 特定分支的回滚。git-rollback 命令行参数:

 
1
 
2
3
4
5
6
7
8
9
OVERVIEW: GIT rollback tools
Usage: git-rollback <options>...] [--] [<pathspec>...] [<refs|branches> ...]
OPTIONS:
  -h [--help]      print usage and exit
  --git-dir        set rollback repository path
  --backid         set rollback commit id
  --backrev        set rollback current back X rev
  --refname        set rollback current reference name
  --force          force gc prune

参数格式与 git-analyze 类似, --force 将强制运行 git gc 并清除悬空对象。当未指定 git-dir 时,为当前目录,未指定 refname 时,为 HEAD 指向的分支。

git-analyze 与 GIT 之间的整合

git 支持使用 git subcommand 的格式运行特定命令,比如 git add 对应的命令就是 git-add, 当用户需要直接运行 git-analyze 这种方式运行这些命令,有几种方法可以做到,第一种是将 git-analyze 加入环境变量,然后可以直接运行

 
1
 
git analyze . refs/heads/master git rollback --backrev 1

同样也可以使用软链接的方式将命令链接到系统目录,在 POSIX 系统中,或者 Windows Subsystem for Linux 可以使用 ln -s,在 Windows 中可以使用 mklink /d 。

git-analyze 的原理

如果需要知道更多的原理,请查看 Git Analyze 工具实现与原理 或者是http://ipvb.oschina.io/git/2016/08/12/Git-Analyze/

最后

简而言之,Git 跨平台分析工具会帮助用户在使用 码云 的过程中更加方便,节省出更多时间。还在犹豫什么,赶快来试试吧!http://git.oschina.net/oscstudio/git-analyze

预编译下载:http://git.oschina.net/oscstudio/git-analyze/releases/1.0.0-Alpha


时间:2016-08-15 21:49 来源:开源中国社区 作者:一路南漂 原文链接

好文,顶一下
(0)
0%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量