Unify history template
[gitphp.git] / include / display.git_history.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/*
 *  display.git_history.php
 *  gitphp: A PHP git repository browser
 *  Component: Display - history
 *
 *  Copyright (C) 2008 Christopher Han <xiphux@gmail.com>
 */
 
 require_once('gitutil.git_get_hash_by_path.php');
 require_once('gitutil.git_read_head.php');
 require_once('gitutil.git_read_commit.php');
 require_once('gitutil.read_info_ref.php');
 require_once('gitutil.git_history_list.php');
 require_once('gitutil.git_path_trees.php');
 
function git_history($projectroot,$project,$hash,$file)
{
        global $tpl;
        if (!isset($hash))
                $hash = git_read_head($projectroot . $project);
        $co = git_read_commit($projectroot . $project, $hash);
        $refs = read_info_ref($projectroot . $project);
        $tpl->clear_all_assign();
        $tpl->assign("project",$project);
        $tpl->assign("hash",$hash);
        if (isset($refs[$hash]))
                $tpl->assign("hashbaseref",$refs[$hash]);
        $tpl->assign("tree",$co['tree']);
        $tpl->assign("title",$co['title']);
        $paths = git_path_trees($projectroot . $project, $hash, $file);
        $tpl->assign("paths",$paths);
        $cmdout = git_history_list($projectroot . $project, $hash, $file);
        $lines = explode("\n", $cmdout);
        $historylines = array();
        foreach ($lines as $i => $line) {
                if (ereg("^([0-9a-fA-F]{40})",$line,$regs))
                        $commit = $regs[1];
                else if (ereg(":([0-7]{6}) ([0-7]{6}) ([0-9a-fA-F]{40}) ([0-9a-fA-F]{40}) (.)\t(.*)$",$line,$regs) && isset($commit)) {
                                $historyline = array();
                                $co = git_read_commit($projectroot . $project, $commit);
                                $historyline["agestringage"] = $co['age_string_age'];
                                $historyline["agestringdate"] = $co['age_string_date'];
                                $historyline["authorname"] = $co['author_name'];
                                $historyline["commit"] = $commit;
                                $historyline["file"] = $file;
                                $historyline["title"] = $co['title_short'];
                                if (isset($refs[$commit]))
                                        $historyline["commitref"] = $refs[$commit];
                                $blob = git_get_hash_by_path($projectroot . $project, $hash,$file);
                                $blob_parent = git_get_hash_by_path($projectroot . $project, $commit,$file);
                                if ($blob && $blob_parent && ($blob != $blob_parent)) {
                                        $historyline["blob"] = $blob;
                                        $historyline["blobparent"] = $blob_parent;
                                }
                                $historylines[] = $historyline;
                                unset($commit);
                }
        }
        $tpl->assign("historylines",$historylines);
        $tpl->display("history.tpl");
}
 
?>
 
comments