summaryrefslogtreecommitdiffabout
path: root/ui-commit.c
Unidiff
Diffstat (limited to 'ui-commit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-commit.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/ui-commit.c b/ui-commit.c
index 2679b59..bf5e6dc 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -118,49 +118,48 @@ void inspect_filepair(struct diff_filepair *pair)
118 items = xrealloc(items, slots * sizeof(struct fileinfo)); 118 items = xrealloc(items, slots * sizeof(struct fileinfo));
119 } 119 }
120 items[files-1].status = pair->status; 120 items[files-1].status = pair->status;
121 hashcpy(items[files-1].old_sha1, pair->one->sha1); 121 hashcpy(items[files-1].old_sha1, pair->one->sha1);
122 hashcpy(items[files-1].new_sha1, pair->two->sha1); 122 hashcpy(items[files-1].new_sha1, pair->two->sha1);
123 items[files-1].old_mode = pair->one->mode; 123 items[files-1].old_mode = pair->one->mode;
124 items[files-1].new_mode = pair->two->mode; 124 items[files-1].new_mode = pair->two->mode;
125 items[files-1].old_path = xstrdup(pair->one->path); 125 items[files-1].old_path = xstrdup(pair->one->path);
126 items[files-1].new_path = xstrdup(pair->two->path); 126 items[files-1].new_path = xstrdup(pair->two->path);
127 items[files-1].added = lines_added; 127 items[files-1].added = lines_added;
128 items[files-1].removed = lines_removed; 128 items[files-1].removed = lines_removed;
129 if (lines_added + lines_removed > max_changes) 129 if (lines_added + lines_removed > max_changes)
130 max_changes = lines_added + lines_removed; 130 max_changes = lines_added + lines_removed;
131 total_adds += lines_added; 131 total_adds += lines_added;
132 total_rems += lines_removed; 132 total_rems += lines_removed;
133} 133}
134 134
135 135
136void cgit_print_commit(char *hex) 136void cgit_print_commit(char *hex)
137{ 137{
138 struct commit *commit, *parent; 138 struct commit *commit, *parent;
139 struct commitinfo *info; 139 struct commitinfo *info;
140 struct commit_list *p; 140 struct commit_list *p;
141 unsigned char sha1[20]; 141 unsigned char sha1[20];
142 char *filename;
143 char *tmp; 142 char *tmp;
144 int i; 143 int i;
145 144
146 if (!hex) 145 if (!hex)
147 hex = cgit_query_head; 146 hex = cgit_query_head;
148 curr_rev = hex; 147 curr_rev = hex;
149 148
150 if (get_sha1(hex, sha1)) { 149 if (get_sha1(hex, sha1)) {
151 cgit_print_error(fmt("Bad object id: %s", hex)); 150 cgit_print_error(fmt("Bad object id: %s", hex));
152 return; 151 return;
153 } 152 }
154 commit = lookup_commit_reference(sha1); 153 commit = lookup_commit_reference(sha1);
155 if (!commit) { 154 if (!commit) {
156 cgit_print_error(fmt("Bad commit reference: %s", hex)); 155 cgit_print_error(fmt("Bad commit reference: %s", hex));
157 return; 156 return;
158 } 157 }
159 info = cgit_parse_commit(commit); 158 info = cgit_parse_commit(commit);
160 159
161 html("<table class='commit-info'>\n"); 160 html("<table class='commit-info'>\n");
162 html("<tr><th>author</th><td>"); 161 html("<tr><th>author</th><td>");
163 html_txt(info->author); 162 html_txt(info->author);
164 html(" "); 163 html(" ");
165 html_txt(info->author_email); 164 html_txt(info->author_email);
166 html("</td><td class='right'>"); 165 html("</td><td class='right'>");
@@ -175,53 +174,51 @@ void cgit_print_commit(char *hex)
175 html("</td></tr>\n"); 174 html("</td></tr>\n");
176 html("<tr><th>tree</th><td colspan='2' class='sha1'>"); 175 html("<tr><th>tree</th><td colspan='2' class='sha1'>");
177 tmp = xstrdup(hex); 176 tmp = xstrdup(hex);
178 cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, 177 cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL,
179 cgit_query_head, tmp, NULL); 178 cgit_query_head, tmp, NULL);
180 html("</td></tr>\n"); 179 html("</td></tr>\n");
181 for (p = commit->parents; p ; p = p->next) { 180 for (p = commit->parents; p ; p = p->next) {
182 parent = lookup_commit_reference(p->item->object.sha1); 181 parent = lookup_commit_reference(p->item->object.sha1);
183 if (!parent) { 182 if (!parent) {
184 html("<tr><td colspan='3'>"); 183 html("<tr><td colspan='3'>");
185 cgit_print_error("Error reading parent commit"); 184 cgit_print_error("Error reading parent commit");
186 html("</td></tr>"); 185 html("</td></tr>");
187 continue; 186 continue;
188 } 187 }
189 html("<tr><th>parent</th>" 188 html("<tr><th>parent</th>"
190 "<td colspan='2' class='sha1'>"); 189 "<td colspan='2' class='sha1'>");
191 cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, 190 cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL,
192 cgit_query_head, sha1_to_hex(p->item->object.sha1)); 191 cgit_query_head, sha1_to_hex(p->item->object.sha1));
193 html(" ("); 192 html(" (");
194 cgit_diff_link("diff", NULL, NULL, cgit_query_head, hex, 193 cgit_diff_link("diff", NULL, NULL, cgit_query_head, hex,
195 sha1_to_hex(p->item->object.sha1), NULL); 194 sha1_to_hex(p->item->object.sha1), NULL);
196 html(")</td></tr>"); 195 html(")</td></tr>");
197 } 196 }
198 if (cgit_repo->snapshots) { 197 if (cgit_repo->snapshots) {
199 htmlf("<tr><th>download</th><td colspan='2' class='sha1'><a href='"); 198 html("<tr><th>download</th><td colspan='2' class='sha1'>");
200 filename = fmt("%s-%s.zip", cgit_query_repo, hex); 199 cgit_print_snapshot_links(cgit_query_repo,hex);
201 html_attr(cgit_pageurl(cgit_query_repo, "snapshot", 200 html("</td></tr>");
202 fmt("id=%s&amp;name=%s", hex, filename)));
203 htmlf("'>%s</a></td></tr>", filename);
204 } 201 }
205 html("</table>\n"); 202 html("</table>\n");
206 html("<div class='commit-subject'>"); 203 html("<div class='commit-subject'>");
207 html_txt(info->subject); 204 html_txt(info->subject);
208 html("</div>"); 205 html("</div>");
209 html("<div class='commit-msg'>"); 206 html("<div class='commit-msg'>");
210 html_txt(info->msg); 207 html_txt(info->msg);
211 html("</div>"); 208 html("</div>");
212 if (!(commit->parents && commit->parents->next && commit->parents->next->next)) { 209 if (!(commit->parents && commit->parents->next && commit->parents->next->next)) {
213 html("<div class='diffstat-header'>Diffstat</div>"); 210 html("<div class='diffstat-header'>Diffstat</div>");
214 html("<table class='diffstat'>"); 211 html("<table class='diffstat'>");
215 max_changes = 0; 212 max_changes = 0;
216 cgit_diff_commit(commit, inspect_filepair); 213 cgit_diff_commit(commit, inspect_filepair);
217 for(i = 0; i<files; i++) 214 for(i = 0; i<files; i++)
218 print_fileinfo(&items[i]); 215 print_fileinfo(&items[i]);
219 html("</table>"); 216 html("</table>");
220 html("<div class='diffstat-summary'>"); 217 html("<div class='diffstat-summary'>");
221 htmlf("%d files changed, %d insertions, %d deletions (", 218 htmlf("%d files changed, %d insertions, %d deletions (",
222 files, total_adds, total_rems); 219 files, total_adds, total_rems);
223 cgit_diff_link("show diff", NULL, NULL, cgit_query_head, hex, 220 cgit_diff_link("show diff", NULL, NULL, cgit_query_head, hex,
224 NULL, NULL); 221 NULL, NULL);
225 html(")</div>"); 222 html(")</div>");
226 } 223 }
227 cgit_free_commitinfo(info); 224 cgit_free_commitinfo(info);