Nasıl git repo için kod tarihin Hatları grafiğini çizebilirsiniz?

oy
40

Temelde ben her tamamlamak sonra depodaki hatlarının-of-kod numarası almak istiyorum.

Bulduğum tek (gerçekten berbat) yolları kullanmaktır git filter-branchçalıştırmak wc -l *ve çalışan bir komut dosyası git reset --hardher işlemek, sonra çalışırwc -l

Aracı çalıştırdığınızda biraz daha net, bu çıkış ait kod satırları ilk böylece daha sonra ikinci işlemeye ve olurdu yapmak. Bu benim (örnek olarak) çıkışına aracı istediğim şey:

me@something:~/$ gitsloc --branch master
10
48
153
450
1734
1542

Ben yakut 'git' kütüphane ile etrafında oynanan ama en yakın ben kullanıyordum buldum .lines()onu eklenen satırları vermelidir gibi görünüyor (ama yapar: örneğin satırları sildiğinizde 0 döndürür) bir fark, üzerinde yöntem

require 'rubygems'
require 'git'

total = 0
g = Git.open(working_dir = '/Users/dbr/Desktop/code_projects/tvdb_api')    

last = nil
g.log.each do |cur|
  diff = g.diff(last, cur)
  total = total + diff.lines
  puts total
  last = cur
end
Oluştur 23/08/2008 saat 04:00
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
4

Akla atlar ilk şey git geçmişi doğrusal olmayan bir geçmişe sahip olasılığıdır. Sen zorluk kaydedilmesini bir mantıklı dizisini belirleyen olabilir.

Eğer kimlikleri ve taahhüt kod tekabül satırları işlemek bir günlük tutmak gibi görünüyor, Having. Bir de bütün yolları bir zaten daha önce gördüğüm taahhüt ulaşana kadar çalışmaya geriye (birden ebeveynler gerekirse için dallanma), BAŞ revizyon başlayarak, kanca post-commit. Yani her id taahhüt için size kod toplam satırları vermelidir.

herhangi yardımcı olur mu? Ben sorunuzun ilgili bir şey yanlış anladın bir his var.

Cevap 23/08/2008 saat 13:39
kaynak kullanıcı

oy
23

Sen git log gibi hem eklenen ve kaldırılan satırları alabilirsiniz:

git log --shortstat --reverse --pretty=oneline

Buradan, bu bilgileri kullanarak yaptığımız birine benzer senaryo yazabilir. python'da:

#!/usr/bin/python

"""
Display the per-commit size of the current git branch.
"""

import subprocess
import re
import sys

def main(argv):
  git = subprocess.Popen(["git", "log", "--shortstat", "--reverse",
                        "--pretty=oneline"], stdout=subprocess.PIPE)
  out, err = git.communicate()
  total_files, total_insertions, total_deletions = 0, 0, 0
  for line in out.split('\n'):
    if not line: continue
    if line[0] != ' ': 
      # This is a description line
      hash, desc = line.split(" ", 1)
    else:
      # This is a stat line
      data = re.findall(
        ' (\d+) files changed, (\d+) insertions\(\+\), (\d+) deletions\(-\)', 
        line)
      files, insertions, deletions = ( int(x) for x in data[0] )
      total_files += files
      total_insertions += insertions
      total_deletions += deletions
      print "%s: %d files, %d lines" % (hash, total_files,
                                        total_insertions - total_deletions)


if __name__ == '__main__':
  sys.exit(main(sys.argv))
Cevap 30/08/2008 saat 04:55
kaynak kullanıcı

oy
23

Şunları da düşünebilirsiniz gitstats bir html dosyası olarak bu grafiği üretir.

Cevap 18/05/2010 saat 05:09
kaynak kullanıcı

oy
9

http://github.com/ITikhonov/git-loc benim için kutudan çıktığı anda çalıştı.

Cevap 05/07/2010 saat 17:18
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more