精华内容
下载资源
问答
  • 2020-09-07 00:31:06


    gitlog

    前言

    随着年龄的增长和知识的积累,最近常常有种豁然开朗的感觉,或者对一个已经存在的事物突然有了新的认识,比如统计这个词很早就接触了,从没考虑过它是什么意思,而这篇总结的题目中用了统计一词,第一感觉应该是汇总、记录的意思,后来去查了词条定义,也确实就是类似的解释,从没有刻意去学这个词的含义,但是在每天的生活中已经潜移默化地归纳、总结出来了。

    想要统计就得有数据源,而 git log 命令恰恰就能提供这个数据源,git log 本身就是一个显示日志的命令,日志记录的是代码库变化的数据,类似于描述代码库变化的 “史书”,想要描述历史就需要大量的数据支撑,想要统计修改的代码行数,只要我们从历史记录中找到需要计算的部分就可以了。

    git log

    在统计之前我们需要先整理数据,杂乱无章的数据不是不能统计,只是计算起来更加的麻烦,所以在统计前需要先将数据规范化,所以我们需要先学习一下 git log 的相关操作。

    我们以 redis 开源库为例,切换到 6.0 分支,提交记录定位到 7bf665f125a4771db095c83a7ad6ed46692cd314,以此为数据源,学习一下git log 的常用的查询方法,其实使用不同的条件查询就是整理、归类数据的过程。

    git log 的用法多种多样,我们主要关心两个大类,分别是条件筛选和显示格式。

    条件筛选

    git log 条件筛选的选项非常多,使用条件筛选的选项会影响显示的提交记录的范围,查找到想要显示的提交记录。

    查询最近几条log

    使用 -number 参数可以查询最近几条提交提交记录:

    $ git log -3
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    commit e15528bf1da1f1232fd08801ad382c915be94662
    Author: Itamar Haber <itamar@redislabs.com>
    Date:   Thu Jul 16 21:31:36 2020 +0300
    
        Adds SHA256SUM to redis-stable tarball upload
    
        (cherry picked from commit 5df0a64d30e7815c0a4a75a80f165fdee0bd1db6)
    

    查询指定作者提交

    使用 --author 参数可以查询指定作者的提交记录:

    Albert@DESKTOP-6746UC3 MINGW64 /d/data/maingit/redis (6.0)
    $ git log -2 --author='Oran Agra'
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    

    查询指定时间段的日志

    这个可选参数比较多,比如 --since--until--before--after 等等,从意思很容易分辨怎么使用:

    查询2020-01-01到2020-04-01的提交记录

    $ git log -2 --after=2020-01-01 --before=2020-04-01
    commit 957e917a84ac9979f18145a4d0b53386f5ce4fd9 (tag: 6.0-rc3)
    Author: antirez <antirez@gmail.com>
    Date:   Tue Mar 31 17:56:04 2020 +0200
    
        Redis 6.0-RC3.
    
    commit ef1b1f01a84e969ea368e7fdbaf0d10615743269
    Author: antirez <antirez@gmail.com>
    Date:   Tue Mar 31 17:41:23 2020 +0200
    
        cast raxSize() to avoid warning with format spec.
    

    恰好逮到了原作者的提交~

    查询1年前的提交记录

    $ git log -2 --until=1.year.ago
    commit 86aade9a024c3582665903d0cc0c5692c6677cfd
    Merge: 89ad0ca56 3bfcae247
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Thu Sep 5 13:30:26 2019 +0200
    
        Merge pull request #6364 from oranagra/fix_module_aux_when
    
        Fix to module aux data rdb format for backwards compatibility with old check-rdb
    
    commit 3bfcae247a1c51788940bd4d2f32751ead451e42
    Author: Oran Agra <oran@redislabs.com>
    Date:   Thu Sep 5 14:11:37 2019 +0300
    
        Fix to module aux data rdb format for backwards compatibility with old check-rdb
    
        When implementing the code that saves and loads these aux fields we used rdb
        format that was added for that in redis 5.0, but then we added the 'when' field
        which meant that the old redis-check-rdb won't be able to skip these.
        this fix adds an opcode as if that 'when' is part of the module data.
    

    查询包含指定描述内容的提交记录

    这里用可以使用 --grep 参数,可以过滤出包含指定内容的提交记录,这里指的是在 commit 描述中筛选符合条件的提交,比如查找提交描述中包含 client 的提交记录:

    $ git log -2 --grep='client'
    commit 0f75036c07db48dfcf605e090216a4447edc38fc
    Author: Wen Hui <wen.hui.ware@gmail.com>
    Date:   Wed Jul 15 05:38:47 2020 -0400
    
        correct error msg for num connections reaching maxclients in cluster mode (#7444)
    
    
        (cherry picked from commit d85af4d6f5fbe9cb9787b81583627cd74b47f838)
    
    commit f89f50dbd06247677b8cb3927cbb88c1b5384061
    Author: Oran Agra <oran@redislabs.com>
    Date:   Tue Jul 14 20:21:59 2020 +0300
    
        diskless master disconnect replicas when rdb child failed (#7518)
    
        in case the rdb child failed, crashed or terminated unexpectedly redis
        would have marked the replica clients with repl_put_online_on_ack and
        then kill them only after a minute when no ack was received.
    
        it would not stream anything to these connections, so the only effect of
        this bug is a delay of 1 minute in the replicas attempt to re-connect.
    
        (cherry picked from commit a176cb56a3c0235adddde33fcbaee2369a5af73e)
    

    查找指定分支的提交记录

    使用 git log 默认查找的是当前分支的提交记录,如果想查询其他分支的记录直接在命令后面加上分支名字就行,比如查询 arm 分支上的提交记录:

    $ git log -2 arm
    commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:07:08 2017 +0000
    
        ARM: Avoid fast path for BITOP.
    
        GCC will produce certain unaligned multi load-store instructions
        that will be trapped by the Linux kernel since ARM v6 cannot
        handle them with unaligned addresses. Better to use the slower
        but safer implementation instead of generating the exception which
        should be anyway very slow.
    
    commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:02:37 2017 +0000
    
        ARM: Use libc malloc by default.
    
        I'm not sure how much test Jemalloc gets on ARM, moreover
        compiling Redis with Jemalloc support in not very powerful
        devices, like most ARMs people will build Redis on, is extremely
        slow. It is possible to enable Jemalloc build anyway if needed
        by using "make MALLOC=jemalloc".
    

    其实在 git 体系中,分支名、commit、标签等拥有几乎相同的含义,所以在很多场景下可以扩展互换,比如 git log 后面加上分支名就可以查询指定分支的提交记录,如果加上 commit 就会查询这个 commit 之前的提交记录,如果加上标签,就可以查询这个标签之前的提交记录,比如我们加一个 commit 试试:

    $ git log -2 7329cc39818a05c168e7d1e791afb03c089f1933
    commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:07:08 2017 +0000
    
        ARM: Avoid fast path for BITOP.
    
        GCC will produce certain unaligned multi load-store instructions
        that will be trapped by the Linux kernel since ARM v6 cannot
        handle them with unaligned addresses. Better to use the slower
        but safer implementation instead of generating the exception which
        should be anyway very slow.
    
    commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:02:37 2017 +0000
    
        ARM: Use libc malloc by default.
    
        I'm not sure how much test Jemalloc gets on ARM, moreover
        compiling Redis with Jemalloc support in not very powerful
        devices, like most ARMs people will build Redis on, is extremely
        slow. It is possible to enable Jemalloc build anyway if needed
        by using "make MALLOC=jemalloc".
    

    因为 commit id 就是之前的 arm 分支最新的记录,所以这个命令等价于 git log -2 arm

    查询指定 commit 之间的提交记录

    如果想查询两个 commit 之前的提交记录,可以将两个 commit id 依次放在命令后面并用 .. 连接就可以了,格式为 git log commit1..commit2,需要注意的是这样查询出来的提交记录列表中不包含 commit1,其实列举出的就是 commit1 之后又做了哪些修改提交。

    $ git log e15528bf1da1f1232fd08801ad382c915be94662..7bf665f125a4771db095c83a7ad6ed46692cd314
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    

    这个特性有一个应用就是在 merge 分支之前可以查询究竟会 merge 哪些记录,常见的用法比如 git log feature..dev 就是列举出 feature 分支合并到 dev 分支将要合并的提交记录有哪些。

    $ git log 6.0..unstable
    commit 324e22accf457edc996971bc97f5474349cd7c4c (unstable)
    Author: antirez <antirez@gmail.com>
    Date:   Fri Dec 20 12:29:02 2019 +0100
    
        Fix ip and missing mode in RM_GetClusterNodeInfo().
    

    查询指定文件的提交记录

    查询指定文件的提交记录一般直接在 git log 命令后面跟上文件名就可以,但是为了避免和分支名产生分歧,所以通常在文件名前面加上 -- 用来区分,-- 这个标识符就是用来防止混淆的,放在 -- 前面的是分支名,放在后面的是文件名,相同的作用不仅仅在 git log 命令中,在其他命令比如 git checkout 中也有相同的用法。

    $ git log -2 -- redis.conf
    commit 7a536c2912be1fd9f62b26b7022a00644c88ef8b
    Author: Yossi Gottlieb <yossigo@users.noreply.github.com>
    Date:   Fri Jul 10 11:33:47 2020 +0300
    
        TLS: Session caching configuration support. (#7420)
    
        * TLS: Session caching configuration support.
        * TLS: Remove redundant config initialization.
    
        (cherry picked from commit 3e6f2b1a45176ac3d81b95cb6025f30d7aaa1393)
    
    commit 8312aa27d47c0befcf69eb74d0a5dc19745ffd32
    Author: antirez <antirez@gmail.com>
    Date:   Mon Jun 22 11:21:21 2020 +0200
    
        Clarify maxclients and cluster in conf. Remove myself too.
    
        (cherry picked from commit 59fd178014c7cca1b0c668b30ab0d991dd3030f3)
    

    显示格式

    git log 除了可以筛选提交记录,还可以控制显示格式,普通不加参数,会显示作者、邮件、提交描述信息、日期等信息。

    $ git log -1
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    

    通过添加参数可以控制和改变显示格式,下面来看几条常见的

    显示单行信息

    git log 默认会显示多行信息,使用 --oneline 后每条提交记录只显示一行信息,可以在一屏幕中查看到更多的信息

    $ git log -10 --oneline
    7bf665f12 (HEAD -> 6.0, tag: 6.0.6, origin/6.0) Redis 6.0.6.
    a5696bdf4 Run daily CI on PRs to release a branch
    e15528bf1 Adds SHA256SUM to redis-stable tarball upload
    e28aa99af Support passing stack allocated module strings to moduleCreateArgvFromUserFormat (#7528)
    305143004 Send null for invalidate on flush (#7469)
    29b20fd52 Notify systemd on sentinel startup (#7168)
    5b3668121 Add registers dump support for Apple silicon (#7453)
    0f75036c0 correct error msg for num connections reaching maxclients in cluster mode (#7444)
    b1a01fda9 Fix command help for unexpected options (#7476)
    83f55f61a Refactor RM_KeyType() by using macro. (#7486)
    

    显示每条记录中文件修改的具体行数和行体统计

    使用 --stat 参数就可以显示每条记录的中修改文件的具体行数和行数统计

    $ git log -2 --stat
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
     00-RELEASENOTES | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     src/help.h      |   4 +-
     src/version.h   |   2 +-
     3 files changed, 248 insertions(+), 3 deletions(-)
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
     .github/workflows/daily.yml | 6 ++++--
     1 file changed, 4 insertions(+), 2 deletions(-)
    

    显示每条提交记录中文件的增加行数和删除行数

    使用 --numstat 参数会把 --stat 参数中合并显示的修改行数拆分成增加行数和删除行数

    $ git log -2 --numstat
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    245     0       00-RELEASENOTES
    2       2       src/help.h
    1       1       src/version.h
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    4       2       .github/workflows/daily.yml
    

    依次罗列各提交记录中每个文件中增加的行数和删除的行数

    要想达到这个目的需要用到 --prety=tformat: --numstat 参数,这样的显示格式便于统计

    $ git log -2 --pretty=tformat: --numstat
    245     0       00-RELEASENOTES
    2       2       src/help.h
    1       1       src/version.h
    4       2       .github/workflows/daily.yml
    

    统计修改的代码行数

    有了前面的铺垫,想要统一修改的行数就容易了,只要配合 awk 工具就可以完成统计了

    $ $ git log -2 --pretty=tformat: --numstat  | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
    added lines: 252 removed lines: 5, diff lines: 247
    

    还可以统计两个分支相差的代码行数

    $ git log 6.0..unstable --pretty=tformat: --numstat  | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
    added lines: 5 removed lines: 2, diff lines: 3
    

    到这里可以发现前面的知识都可以用上,前面筛选的参数变了,得到的结果就变了,我们可以根据需求来调整不同的参数

    总结

    • git log 就是一部代码库记录的“史书”,对于曾经所做的修改可以做到有史可查
    • git log 的选项参数可以分为筛选参数和格式参数,筛选参数可以选择记录范围,格式参数可以控制显示样式
    • 统计就是按照一定规律来将数据进行汇总,在进行汇总前需要将数据进行整理,这样汇总的工作才会更加顺利

    ==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

    慌慌张张,匆匆忙忙,原来生活就是这样~

    更多相关内容
  • 什么是网站的统计代码

    千次阅读 2019-08-05 22:04:40
    1、什么是统计代码,它包含的种类有哪些?作用是什么? 引言:一般网站做好了站长希望知道一天有多少人访问,通过哪些关键词来自己的网站等等 网站统计:是指通过专业的网站统计分析系统(或软件),对网站访问...

     

    1、什么是统计代码,它包含的种类有哪些?作用是什么?

    引言:一般网站做好了站长希望知道一天有多少人访问,通过哪些关键词来自己的网站等等  

    网站统计:是指通过专业的网站统计分析系统(或软件),对网站访问信息的记录并归类,以及在此基础上的统计分析,如网站访问量的增长趋势图、用户访问最高的时段、访问最多的网页、停留时间、用户使用的搜索引擎,主要关键词、来路、入口、浏览深度、所用语言、所用浏览器种类、时段访问量统计分析、日段访问量统计分析以及周月访问量统计分析等网站访问数据的基础分析。   (客户每打开页面一次,数据就会被发送到这个统计网站一次并统计出流量,因为统计方为第三方,所以数据比较客观,准确性和真实性较高。如果自己统计,数据就带有较强的主观性),统计代码商业性质类比于云计算;

    (1)统计代码分为两类。

    a、网络统计代码。
        例如51YES统计,YAHOO站长统计,站长统计,武林榜等,类似的都是网络统计代码。

    b、流量统计小程序。
    很多统计代码,是直接的一套小程序,可以直接放到自己的空间里,然后进行调用的,和使用网络统计的效果是一样的。现在基本上都使用网络版。
     (2)统计代码的主要作用是什么?
        1,统计网站的流量。
        2,统计网站的总浏览量,每打开一个页面,计算一次。
        3,统计流量地区分布。
        4,统计搜索引擎来的流量的具体关键词和所使用的搜索引擎。
        5,被访问页的情况。
        6,当前在线人数
        7,回头率等。
     (3) 网络版与程序版的区别是什么?

               网络版为第三方统计,具有更强的准确性和真实性,而且网络版的功能更强大,所以一般现在都是使用的网络版,程序版是在网络版出现以前的常用的统计流量的方法。
     (4)使用统计代码的注意事项是什么?
               我们必须要养成一个习惯,那就是无论我们在网络上做什么事还是使用什么程序或者后台的时候,一定要记住,那就是无论这个程序上有什么链接或者是有什么功能都要挨着试一遍,一般统计代码都是站长服务站来提供的,里面常常链接着多种工具,例如ALEXA查询工具,反链接查询工具等等。

    (5)如何制造高流量的假象?
        有很多站,为了制造高流量在线的假象,常用的方法就是使用别人的统计代码,也就是偷别人的流量代码。

    (6)如何偷别人的流量代码?

        1,打开他的网页。
        2,在工具条中选择查看源代码。
        3,例如是站长站的,那么就直接在源代码中搜索“cnzz”,那么就可以搜索到。
     (7)哪一款统计代码最好?
              那么哪一款统计代码最好呢?这是大家经常讨论的一个问题, 就是到底是哪个统计代码最准确呢?
              我们不是做数学的,我们是做网络的,是以赢利为核心,所以对于我们来说,常用的几款统计代码,都是一样的效果,所以任何一款都是可以的,没有优劣之分。因为我们需要看的是大体的流量曲线图和基本的大概的数字就可以了,基本上所有的网络版的统计服务,都可以实现这个功能,所以基本上所有的统计服务都是一样

    2、常见的第三方网站统计服务供应商:百度、51yes ,cnzz ,51.la ,tongji;不同的统计工具每天统计的访问ip数也有差别,有的这个统计多,有的那个统计工具多

    3、实现网站统计功能步骤:往供应商注册===》填写网站相关信息===》获取到统计代码===》统计代码放于站点的</body>前===》实现各种网站信息的统计

    4、统计代码实现成果物示例:

          上图显示的就是自己网页哪些页面访问的最多。好让自己对自己的网站页面心中有数。此外还有更多功能,比如访问量的年纪,用的什么浏览器,学历等等。虽然有人觉得统计的成果的作用还是比较模糊,觉得无关紧要,当然,并非所有数据都那么重要。

    5、站外网站统计第三方供应商链接:

    友盟+,国内领先的第三方全域数据智能服务商
    https://www.umeng.com/

    如何给网站中添加统计代码-百度经验
    https://jingyan.baidu.com/article/08b6a591afce9d14a9092241.html

    展开全文
  • 所以我的想法是,使用代码统计每个人每天的提交数量,然后通过随机抽查去查看每个人的代码质量。 准备 确定了自己的需求后,就开始着手准备具体手段了。下面先看下我们当前有的东西。 1.内网gitlab代码
    如果您觉得文章内容对您有用,请**点赞**支持一下。您的支持是我继续创作的最大动力。也欢迎关注我的公众号”计算机自学平台“获取更多学习资源和交流群体。
    

    引言
    前几天接到领导命令:以后把每天提交的代码作为一项考核标准。
    团队人员说多也不多,但也有15个人了。自己去一个一个看并统计提交量,既浪费时间又浪费精力。
    所以我的想法是,使用代码去统计每个人每天的提交数量,然后通过随机抽查去查看每个人的代码质量。
    准备
    确定了自己的需求后,就开始着手准备具体手段了。下面先看下我们当前有的东西。
    1.内网gitlab代码仓库
    2.管理员级别的账号
    管理员级别的账号就不需要多说了,我们先看gitlab,我们的目的是统计每个人每天的提交量,那么通过GitlabGUI界面是否能实现?可以,通过以下功能进入活动页面:
    在这里插入图片描述
    然后再活动页面你会看到所有人所有项目的提交记录:
    在这里插入图片描述
    通过每个人的提交记录,然后点进去就是他本次提交的内容。所以,这个手动统计的办法是可以实现领导提的需求的,但是此方法上面说了,太费时费力。那我们怎么用代码去统计呢?
    调研
    这个时候python-gitlab就要开始登场了,这个项目是通过gitlab公开的API进行封装的一套易用插件。地址:https://readthedocs.org/projects/python-gitlab/
    在这里插入图片描述
    具体的使用说明文档也在上面那个地址中,我们仅仅是用来统计代码提交量的所以直奔主题。
    安装python-gitlab
    打开终端输入:

    pip3 install python-gitlab
    

    待提醒success即表示安装成功。
    编码准备
    根据python-gitlab文档可知,我们需要一个private_token来做所有操作的一个身份识别。那么这个token怎么获取呢?
    1.打开个人下面的setting
    在这里插入图片描述
    2.在setting中选择
    在这里插入图片描述
    3.然后在打开的页面中,你会看到如下界面:
    在这里插入图片描述
    在这里我们只需要填写name并勾选api即可。(其他几个的功能也很简单就不细说了)
    在这里插入图片描述
    填好后,点击下面的按钮即可,这个时候就会生成我们所需要的private_token了:
    在这里插入图片描述
    复制备用即可。
    编码
    下面打开我们的编辑器,开始编码。在编码前我们先梳理一下编码逻辑
    1.需要遍历所有项目
    2.需要遍历所有项目下面拥有的分支
    3.遍历所有分支下每个人提交的代码数量
    4.有时间限制
    下面开始编码。
    1.配置项目配置

    url = 'http://192.168.1.229/'  # gitlab安装地址
    private_token = 'dfsdfadJZr7ZDMtsn9REC'  # gitlab 就是上面我们获取的那个
    
    2.获取gitlab操作对象
    
    # 登录 获取gitlab操作对象gl
    gl = gitlab.Gitlab(url, private_token)
    
    3.设置时间范围,因为我每天都要统计,所以选择的是一个24小时范围。
    
    start_time = '2020-05-25T00:00:00Z'
    end_time = '2020-05-26T00:00:00Z'
    
    4.遍历出来所有项目,因为一个公司不可能只有一个项目,有可能有很多个。我们这边有三十多个,所以为了统计完全就需要把所有项目都遍历一遍。如果你仅有一个那就不需要这么麻烦了。
    
    projects = gl.projects.list(all=True)#先把所有项目查出来
    for project in projects:#遍历每一个项目
    	branches = project.branches.list()#把每个项目下面的所有分支查出来
    	for branch in branches:#然后再遍历每一个分支
    		commits = project.commits.list(all=True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name})#根据时间、分支名遍历该分支下面所有的提交记录
    		for commit in commits:#然后再遍历每个提交记录,查询每个提交记录的人和量
    			com = project.commits.get(commit.id)
    

    到这里我们就把所有人的所有提交量都查出来了,其中对我们有用的就两个参数,一个是com.author_name对应每个提交者name,com.stats[‘additions’]对应的是提交量。
    5.下一步就是去重,相加,就可以了。
    我的运行结果:

    [ {'name': 'aaa', 'total': 757}, {'name': 'bbb', 'total': 290}, {'name': 'ccc', 'total': 244}, {'name': 'ddd', 'total': 448}, {'name': 'eee', 'total': 854}, {'name': 'fff', 'total': 253}, {'name': 'ggg', 'total': 1705}, {'name': 'hhh', 'total': 131}]
    

    至此,实现我们的需求。
    欢迎留言交流,也可以去公众号”计算机自学平台”回复gitlab获取源代码。

    展开全文
  • 代码各种维度的统计在有些时候是很重要的,这里总结一些常用的牛逼的代码统计工具,着重介绍了个人使用的 Statistic 插件。但是如果你是想统计团队维度的数据,推荐后面介绍的 git_stats 神器工具。 Statistic IDEA ...

    工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~

    背景

    代码各种维度的统计在有些时候是很重要的,这里总结一些常用的牛逼的代码统计工具,着重介绍了个人使用的 Statistic 插件。但是如果你是想统计团队维度的数据,推荐后面介绍的 git_stats 神器工具。

    Statistic IDEA 插件

    IDEA 的 Statistic 插件官方地址为 https://plugins.jetbrains.com/plugin/4509-statistic ,大家可以直接通过 IDEA 的插件 market 市场在线下载,搜索如下即可:

    在这里插入图片描述

    其提供了各种维度的筛选,大家可以自己在设置里设置自己的条件或者选择自己的筛选范围,譬如如下是各种维度的数据统计结果:

    在这里插入图片描述
    如下是点击面板上 Settings 设置按钮的自定义设置维度:

    在这里插入图片描述

    还有哪些比较好用的代码量统计工具呢?

    如下再顺带推荐几个牛逼有趣的统计工具供你选用。

    cloc 极客命令行工具

    项目地址为https://github.com/AlDanial/cloc,里面给出了详细的使用说明和特性,这里不再介绍,具体参考官方文档,如下是一个命令使用结果示例:

    -------------------------------------------------------------------------------
    Language                     files          blank        comment           code
    -------------------------------------------------------------------------------
    Python                          28           1519            728           4659
    YAML                             2              9              2             75
    Bourne Shell                     3              6              0             17
    make                             1              4              6             10
    -------------------------------------------------------------------------------
    SUM:                            34           1538            736           4761
    -------------------------------------------------------------------------------
    

    依赖 git 仓库的 gitstats

    这个牛逼的要命!!!!团队极力推荐!!!!!!!

    对于大型的 git 仓库追踪项目,很多可视化工具远远不足以了解项目完整的开发历史和周期,一些定量维度的统计数据(如每日提交量,行数等)更能反映项目的开发进程和活跃性(不过管理者大佬们绝对不能以这个为 kpi 维度,不然大家会疯狂提交一行一行的代码)。

    gitstats 是一个 git 仓库分析软件,它可以检查仓库并生成历史数据的统计信息。可以帮我们查看 git 仓库的提交状态,根据不同维度分析计算,并自动生成数据图表,其统计维度很多,常见的如下:

    • 代码统计:文件总数、行数、提交量、作者数,按日期划分,按扩展名划分等。
    • 活跃性:每天中每小时、每周中每天、每周中每小时、每年中每月、每年的提交量。
    • 作者数:列举所有的作者(提交数,第一次提交日期,最近一次的提交日期),并按月和年来划分。

    其官方网址为http://gitstats.sourceforge.net/,里面详细说明了怎么安装和配置及查看数据报表。官方也给出了一个报表样例,链接为 http://gitstats.sourceforge.net/examples/gitstats/index.html,具体数据维度如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    一句话总结就是牛逼,觉得值得,你公司如果有大盘显示器实时显示那就更加炫酷了。

    杠精工具之 find 命令

    不说了,这个绝对牛逼和原始,直接 find 走起,如下:

    find . -name "*.java" -or -name "*.xml" -print | xargs wc -l
    

    我颤抖了,确实能统计到数据,只是,只是,只是 无力反驳,是在下输了!!!!!

    在这里插入图片描述

    【工匠若水 未经允许严禁转载,请尊重作者劳动成果。+微信 yanbo373131686 联系我】

    展开全文
  • Flink 统计页面点击量

    万次阅读 2022-04-04 12:24:30
    Flink 统计页面点击量
  • 工具:Visual Studio 2015 opencv3.2.0... 下面代码实现的是批量读取某文件夹下面的一组图片,然后对其某个特定的颜色进行识别,对个数做统计。 并且还可以对目标的面积做筛选,大于一定值的或者小于一定值的剔除。...
  • 其中有三个select,,第二个select是将时间段生成日期,第二个select是将表中的不为0的数据量统计出来,然后用left join连接起来,在用第一个select将符合条件的查出来,无数据的自动补零 有需要添加限制条件的在...
  • 众多站长在拥有自己的网站之后,都希望知道每天有多少人来看自己的网站,网站流量是多少等等。网站分析工具就可以帮助你了解这些。市面上有非常多的网站分析工具。比较普遍使用的——国外的有 Google Analytics(简称...
  • 大数据开发最常统计的需求可能就是 PV、UV。PV 全拼 PageView,即页面访问量,用户每次对网站的访问均被记录,按照访问量进行累计,假如用户对同一页面访问了 5 次,那该页面的 PV 就应该加 5。UV 全拼为 ...
  • 最近有个需求,实时统计pv,uv,结果按照date,hour,pv,uv来展示,当然了实际还需要按照类型字段分类统计pv,uv,比如按照date,hour,pv,uv,type来展示。这里介绍最基本的pv,uv的展示。 id uv pv date hour ...
  • APP统计分析 用户画像 对程序员来说,用户画像就是用户的属性和行为;通俗地说,用户画像是...用户画像的一个具体应用是电商app的“猜你喜欢”栏目,电商平台通过对用户购买过的商品进行统计,可以分析用户日常生活
  • 数据:现在以食堂的刷卡记录为例,统计每天每餐的就餐人数,数据大概如下:方案:为了统计每天每餐的就餐人数,至少要进行一下3点:1.把【消费时间】列进行处理,得到【日期】列,因为我们以天为单位统计;2.去除...
  • 在这部分里,将讲述基于时间序列的常用统计方法。 1 用rolling方法计算移动平均值 当时间序列的样本数波动较大时,从中不大容易分析出未来的发展趋势的时候,可以使用移动平均法来消除随机波动的影响。可以说,...
  • 那在线人数是如何统计的呢,这里有几种方案,代码用laravel框架。可以作为开发中参考。1 用表统计方式用数据表统计在线人数,这种方式只能用在并发量不大的情况下。首先我们先新建表:user_loginuser_login表模拟...
  • Git Stat(Git 代码提交统计

    万次阅读 2015-07-14 17:00:25
    Git Stat最近项目在搞人力资源配置优化,其中一个就是对代码提交量做统计,项目使用的是 Git 仓库,本来想偷懒去网上找个现成的工具,结果有点失望,没有找到能用的,绝大部分都是 shell 脚本,虽然也能执行,但想要...
  • 【前言】 我相信,大多开发人员在刚进公司的时候,基本都是在写业务代码,结果两三年下来,发现自己代码确实写得比以前好看多了,但对整个的网站从开发上线的流程,却还是一头雾水。下面以我自己的经验给大家说下...
  • 代码review总结

    万次阅读 2017-11-28 09:26:41
    Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这里的这篇文章,我们主要想和大家分享一下Code Review代码审查的...
  • Sql如何统计连续打卡天数

    千次阅读 2020-04-11 10:17:45
    总第208篇/张俊红今天来解一道题面试中可能经常会被一些面试官拿来“刁难”的题,就是《如何统计连续打卡天数》,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连...
  • 疫情统计体温程序

    千次阅读 2020-09-14 15:29:59
    现在在学校每天都有三次体温要统计,但是核对每个同学们的体温再填表是非常辛苦的,因此简单写了个小程序,帮女朋友统计体温。 原理 在复制出微信的消息后,粘贴本地的txt文件中,保存下来的数据格式如下所示: ...
  • Flink实战 - 统计每个店铺每日GMV

    千次阅读 2020-11-15 17:25:35
    计算这个任务是用 Stream API 实现的,对每个shopId和时间天进行keyby,具体代码: // payTime 转时间格式 <这个后续有优化的方案> SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd"); shopOrd
  • 使用VBA实现数据统计

    千次阅读 2017-07-11 19:11:19
    工作中经常需要用到excel,有时候会统计和计算大量数据,如果用人工来做会耗时耗力,而且容易出错。如果使用excel的公式,稍微复杂一点的需求就没办法实现。 excel支持VBA编程,所以用程序来实现一些复杂的需求,看...
  • 逻辑代码自动生成相关技术概述

    千次阅读 2020-08-13 13:44:00
    其中, 程序自动生成技术被认为是提高软件开发自动化程度和最终质量的重要方法,受学术界和工业界的广泛关注。程序自动生成技术指利用某些技术自动地为软件生成源代码,达到根据用户的需求机器自动编程的目的。极大...
  • 从日志统计到大数据分析

    万次阅读 2016-12-22 16:44:46
    Hadoop本身支持将任务分割为Mapper和Reducer两个阶段,我又增加了一个Computer阶段,作用是将Reducer的结果(一般是统计数值)拿执行机(分布式提交任务的节点),并将其插入数据库。我当时的想法是如果Hadoop不...
  • Flink实时统计pv、uv数

    千次阅读 2021-12-04 20:58:38
    目录 一、每小时输出一次窗口时间内的pv数 二、自定义布隆过滤器统计累计时间内的uv数 三、从每天0点开始,每一小时输出累计的pv、uv数 一、每小时输出一次窗口时间内的pv数 先定义两个pojo类,UserBehavior为输入类...
  • 概念 Wilcoxon 符号秩检验的检验目的和符号检验是一样的,但 Wilcoxon 符号秩检验需要假设样本点来自连续对称总体分布,在这个假设下总体的... 代码 为了解垃圾邮件对大型公司决策层的工作影响程度,某网站收集了19...
  • springboot实现在线用户统计

    千次阅读 2021-01-12 13:11:14
    第三步骤:控制编写。新建UserStatisticsController 类1、后台模拟登录,...3、session超时自动销毁,也会调用sessionDestroyed方法4、具体代码如下所示import com.example.excelimport.listener.UserStatisticsLis...
  • 具体的绘制功能,每一帧视频,都有这些功能,将飞行器信息绘制视频之上。 MavLink.ino 则是用于对 mavlink 协议的解析,将收到的数据包按照 mavlink 协议解析,解析成功后将数据储存在 ODS_Vars.h 中定义的...
  • 每每刷完一题,我便将这道题所总结出的思路归纳这类题型下: 首先看下这个思路与伪代码的契合度。如果无法直接套用,有2个原因。1是伪代码不够通用,2是着实属于一道新题型; 如果是1,需要根据总结出的思路...
  • 流式数据中的数学统计量计算

    千次阅读 2017-07-03 22:38:04
    在科技飞速发展的今天,每天都会产生大量新数据,例如银行交易记录,卫星飞行记录,网页点击信息,用户日志等。为了充分利用这些数据,我们需要对数据进行分析。在数据分析领域,很重要的一块内容是流式数据分析。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,426
精华内容 17,770
关键字:

统计代码具体到每天