git
tool.
# Collect more information on a package using the `git` tool.
fun git_info(mpackage: MPackage)
do
var ini = mpackage.ini
if ini == null then return
var root = mpackage.root
if root == null then return
# TODO use real git info
#var repo = ini.get_or_null("upstream.git")
#var branch = ini.get_or_null("upstream.git.branch")
#var directory = ini.get_or_null("upstream.git.directory")
var dirpath = root.filepath
if dirpath == null then return
# Collect commits info
var res = git_run("log", "--no-merges", "--follow", "--pretty=tformat:%ad;%aN <%aE>", "--", dirpath)
var contributors = new Counter[String]
var commits = res.split("\n")
if commits.not_empty and commits.last == "" then commits.pop
self.commits[mpackage] = commits.length
for l in commits do
var s = l.split_once_on(';')
if s.length != 2 or s.last == "" then continue
# Collect date of last and first commit
if mpackage.metadata.last_date == null then mpackage.metadata.last_date = s.first
mpackage.metadata.first_date = s.first
# Count contributors
contributors.inc(s.last)
end
for c in contributors.sort.reverse_iterator do
register_contrib(c, mpackage)
end
end
src/catalog/catalog.nit:473,2--510,4