zoukankan      html  css  js  c++  java
  • JGit、SvnKit

    1、相关开源jar包 

      1》使用JGIT访问git项目
      2》使用SVNkit访问svn

      Git官方JGit使用教程指导

    2、Git历史提交日志导出到文件

     在项目根目录执行如下命令,将日志导出到指定位置:

    git log --name-status --date=iso --pretty=format:"%H ,%T ,%P ,%an ,%ae ,%cn ,%ce ,%cd ,%s" --since="100 day ago" >> C:/Users/lfy/Desktop/fyliu_commit.log

    如果需要指定导出某些开发者的记录,可以使用grep过滤:

    git log --name-status --date=iso --pretty=format:"%H ,%T ,%P ,%an ,%ae ,%cn ,%ce ,%cd ,%s" --since="100 day ago" |grep "lfy" >> C:/Users/lfy/Desktop/lfy_commit.log

    导出成Excel文件:

    git log --name-status --date=iso --pretty=format:'"%H","%T","%P","%an","%ae","%cn","%ce","%cd","%s"' >> C:/Users/lfy/Desktop/commit.csv

    结果:

     git log --pretty=format常用的选项

    %H: commit hash
    %h: 缩短的commit hash
    %T: tree hash
    %t: 缩短的 tree hash
    %P: parent hash
    %p: 缩短的 parent hash
    %an: 作者名字
    %aN: mailmap的作者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    %ae: 作者邮箱
    %aE: 作者邮箱 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    %ad: 日期 (--date= 制定的格式)
    %aD: 日期, RFC2822格式
    %ar: 日期, 相对格式(1 day ago)
    %at: 日期, UNIX timestamp
    %ai: 日期, ISO 8601 格式
    %cn: 提交者名字
    %cN: 提交者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    %ce: 提交者 email
    %cE: 提交者 email (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    %cd: 提交日期 (--date= 制定的格式)
    %cD: 提交日期, RFC2822格式
    %cr: 提交日期, 相对格式(1 day ago)
    %ct: 提交日期, UNIX timestamp
    %ci: 提交日期, ISO 8601 格式
    %d: ref名称
    %e: encoding
    %s: commit信息标题
    %f: sanitized subject line, suitable for a filename
    %b: commit信息内容
    %N: commit notes
    %gD: reflog selector, e.g., refs/stash@{1}
    %gd: shortened reflog selector, e.g., stash@{1}
    %gs: reflog subject
    %Cred: 切换到红色
    %Cgreen: 切换到绿色
    %Cblue: 切换到蓝色
    %Creset: 重设颜色
    %C(...): 制定颜色, as described in color.branch.* config option
    %m: left, right or boundary mark
    %n: 换行
    %%: a raw %
    %x00: print a byte from a hex code
    %w([[,[,]]]): switch line wrapping, like the -w option of git-shortlog(1).

    git log常用选项

    选项 说明
    -p 按补丁格式显示每个更新之间的差异。
    --stat 显示每次更新的文件修改统计信息。
    --shortstat 只显示--stat中最后的行数修改添加移除统计。
    --name-only 仅在提交信息后显示已修改的文件清单。
    --name-status 显示新增,修改,删除的文件清单。
    --abbrev-commit 只显示SHA-1的前几个字符,而非所有的40个字符。
    --relative-date 使用较短的相对时间显示(比如,“2周前”)。
    --graph 显示ASCII图形表示的分支合并历史。
    --pretty 使用其他格式显示历史提交信息。可用的选项包括oneline,short,full,fuller和format(后跟指定格式)。

    限制git log输出的选项

    选项 说明
    -(n) 仅显示最近的n条提交
    --since,--after 仅显示指定时间之后的提交。
    --until, --before 仅显示指定时间之前的提交。
    --author 仅显示指定作者相关的提交。
    --committer 仅显示指定提交者相关的提交。
    --grep 仅显示含指定关键字的提交
    -S 仅显示添加或移除了某个关键字的提交

    Git官方日志查询指导

    3、统计代码量

    //按照时间统计
    git log --since="2019-09-05" --pretty=tformat: --numstat |gawk '{ add += $1 ; subs += $2 ; loc += $1 + $2 }
    END { printf "added lines: %s removed lines : %s total lines: %s ",add,subs,loc }
    '
    查看git上个人代码量
    git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } 
    END { printf "added lines: %s, removed lines: %s, total lines: %s
    ", add, subs, loc }' - 
    统计每个人的增删行数
    
    git log --format='%aN' | sort -u | while read name; do echo -en "$name	"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s
    ", add, subs, loc }' -; done 
    查看仓库提交者排名前 5
    
    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5 
    贡献者统计:
    
    git log --pretty='%aN' | sort -u | wc -l 
    提交数统计:
    
    git log --oneline | wc -l
    
    统计代码总行数: 
    find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l
    
    ---------------------------------
    ---------------------------------
    git log 参数说明: 
    –author 指定作者 
    –stat 显示每次更新的文件修改统计信息,会列出具体文件列表 
    –shortstat 统计每个commit 的文件修改行数,包括增加,删除,但不列出文件列表: 
    –numstat 统计每个commit 的文件修改行数,包括增加,删除,并列出文件列表: 
    -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新 
    例如:git log -p -2 
    –name-only 仅在提交信息后显示已修改的文件清单 
    –name-status 显示新增、修改、删除的文件清单 
    –abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符 
    –relative-date 使用较短的相对时间显示(比如,“2 weeks ago”) 
    –graph 显示 ASCII 图形表示的分支合并历史 
    –pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式) 
    例如: git log –pretty=oneline ; git log –pretty=short ; git log –pretty=full ; git log –pretty=fuller 
    –pretty=tformat: 可以定制要显示的记录格式,这样的输出便于后期编程提取分析 
    例如:git log –pretty=format:”“%h - %an, %ar : %s”” 
    下面列出了常用的格式占位符写法及其代表的意义。 
    选项 说明 
    %H 提交对象(commit)的完整哈希字串 
    %h 提交对象的简短哈希字串 
    %T 树对象(tree)的完整哈希字串 
    %t 树对象的简短哈希字串 
    %P 父对象(parent)的完整哈希字串 
    %p 父对象的简短哈希字串 
    %an 作者(author)的名字 
    %ae 作者的电子邮件地址 
    %ad 作者修订日期(可以用 -date= 选项定制格式) 
    %ar 作者修订日期,按多久以前的方式显示 
    %cn 提交者(committer)的名字 
    %ce 提交者的电子邮件地址 
    %cd 提交日期 
    %cr 提交日期,按多久以前的方式显示 
    %s 提交说明 
    –since 限制显示输出的范围, 
    例如: git log –since=2.weeks 显示最近两周的提交 
    选项 说明 
    -(n) 仅显示最近的 n 条提交 
    –since, –after 仅显示指定时间之后的提交。 
    –until, –before 仅显示指定时间之前的提交。 
    –author 仅显示指定作者相关的提交。 
    –committer 仅显示指定提交者相关的提交。
    
    一些例子: git log --until=1.minute.ago // 一分钟之前的所有log 
               git log --since=1.day.ago //一天之内的log 
               git log --since=1.hour.ago //一个小时之内的log 
               git log --since=`.month.ago --until=2.weeks.ago //一个月之前到半个月之前的log   
               
               
    看看某一个文件的相关历史记录 
    例如:git blame index.html –date short 
  • 相关阅读:
    UVALive 5983 MAGRID DP
    2015暑假训练(UVALive 5983
    poj 1426 Find The Multiple (BFS)
    poj 3126 Prime Path (BFS)
    poj 2251 Dungeon Master 3维bfs(水水)
    poj 3278 catch that cow BFS(基础水)
    poj3083 Children of the Candy Corn BFS&&DFS
    BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
    洛谷P3178 [HAOI2015]树上操作(dfs序+线段树)
    洛谷P3065 [USACO12DEC]第一!First!(Trie树+拓扑排序)
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11469631.html
Copyright © 2011-2022 走看看