' +
- '';
+ if (diffContent != "" || binary) {
+ finalContent += '
' +
+ '';
+ }
- if (!binary) {
+ if (!binary && (diffContent != "")) {
finalContent += '
' +
'
' + line1 + "
" +
'
' + line2 + "
" +
@@ -86,7 +88,8 @@ var highlightDiff = function(diff, element, callbacks) {
}
}
- finalContent += '
';
+ if (diffContent != "" || binary)
+ finalContent += '
';
line1 = "";
line2 = "";
@@ -117,6 +120,29 @@ var highlightDiff = function(diff, element, callbacks) {
}
if (header) {
+ if (firstChar == "n") {
+ if (l.match(/^new file mode .*$/))
+ startname = "/dev/null";
+
+ if (match = l.match(/^new mode (.*)$/)) {
+ mode_change = true;
+ new_mode = match[1];
+ }
+ continue;
+ }
+ if (firstChar == "o") {
+ if (match = l.match(/^old mode (.*)$/)) {
+ mode_change = true;
+ old_mode = match[1];
+ }
+ continue;
+ }
+
+ if (firstChar == "d") {
+ if (l.match(/^deleted file mode .*$/))
+ endname = "/dev/null";
+ continue;
+ }
if (firstChar == "-") {
if (match = l.match(/^--- (a\/)?(.*)$/))
startname = match[2];
@@ -153,17 +179,6 @@ var highlightDiff = function(diff, element, callbacks) {
}
}
- if (match = l.match(/^old mode (.*)$/)) {
- mode_change = true;
- old_mode = match[1];
- }
-
- if (match = l.match(/^new mode (.*)$/)) {
- mode_change = true;
- new_mode = match[1];
- }
-
-
// Finish the header
if (firstChar == "@")
header = false;
@@ -188,7 +203,7 @@ var highlightDiff = function(diff, element, callbacks) {
header = false;
}
- if (m = l.match(/@@ \-([0-9]+),\d+ \+(\d+),\d+ @@/))
+ if (m = l.match(/@@ \-([0-9]+),?\d* \+(\d+),?\d* @@/))
{
hunk_start_line_1 = parseInt(m[1]) - 1;
hunk_start_line_2 = parseInt(m[2]) - 1;
@@ -199,14 +214,14 @@ var highlightDiff = function(diff, element, callbacks) {
} else if (firstChar == " ") {
line1 += ++hunk_start_line_1 + "\n";
line2 += ++hunk_start_line_2 + "\n";
- diffContent += l + "\n";
+ diffContent += "
" + l + "
";
}
}
finishContent();
// This takes about 7ms
- element.innerHTML = finalContent;
+ // element.innerHTML = finalContent;
// TODO: Replace this with a performance pref call
if (false)
diff --git a/html/test.html b/html/test.html
index 795c686..8919193 100644
--- a/html/test.html
+++ b/html/test.html
@@ -13,10 +13,13 @@
}
var doeHet = function() {
+ var start = Date.now();
highlightDiff($("orig_diff").value,
$("diff"),
{ "newfile" : newFile }
);
+ var end = Date.now();
+ console.debug("Parsing took: " + (end - start) + " ms");
}
diff --git a/html/views/commit/commit.css b/html/views/commit/commit.css
index 18d6a2e..268109d 100644
--- a/html/views/commit/commit.css
+++ b/html/views/commit/commit.css
@@ -61,7 +61,6 @@ table.diff {
}
.diff a.stagebutton {
- display: block;
width: 40px;
padding: 0 2px 0 2px;
margin-bottom: 4px;
@@ -77,7 +76,6 @@ table.diff {
text-align: center;
-webkit-border-radius: 2px;
- float: left;
}
#multiselect {
@@ -94,4 +92,4 @@ table.diff {
border: 5px solid #EEE;
margin: -5px;
padding-left: 20px;
-}
\ No newline at end of file
+}
diff --git a/html/views/history/history.css b/html/views/history/history.css
index 7c1aaf8..ff505aa 100644
--- a/html/views/history/history.css
+++ b/html/views/history/history.css
@@ -48,7 +48,7 @@ a.servicebutton{
}
.property_name {
- width: 50px;
+ width: 6em;
color:#7F7F7F;
text-align: right;
font-weight: bold;
diff --git a/html/views/history/history.js b/html/views/history/history.js
index 258310c..ee94436 100644
--- a/html/views/history/history.js
+++ b/html/views/history/history.js
@@ -40,11 +40,34 @@ var Commit = function(obj) {
}
this.reloadRefs = function() {
- this.refs = this.object.refs;
+ this.refs = this.object.refs();
}
};
+
+var confirm_gist = function(confirmation_message) {
+ if (!Controller.isFeatureEnabled_("confirmGist")) {
+ gistie();
+ return;
+ }
+
+ // Set optional confirmation_message
+ confirmation_message = confirmation_message || "Yes. Paste this commit.";
+ var deleteMessage = Controller.getConfig_("github.token") ? " " : "You might not be able to delete it after posting.
";
+ var publicMessage = Controller.isFeatureEnabled_("publicGist") ? "
public" : "private";
+ // Insert the verification links into div#notification_message
+ var notification_text = 'This will create a ' + publicMessage + ' paste of your commit to
http://gist.github.com/' +
+ deleteMessage +
+ 'Are you sure you want to continue?
' +
+ '
No. Cancel. | ' +
+ '
' + confirmation_message + '';
+
+ notify(notification_text, 0);
+ // Hide img#spinner, since it?s visible by default
+ $("spinner").style.display = "none";
+}
+
var gistie = function() {
notify("Uploading code to Gistie..", 0);
@@ -60,9 +83,9 @@ var gistie = function() {
if (token && login) {
parameters.login = login;
parameters.token = token;
- } else {
- parameters.private = true;
}
+ if (!Controller.isFeatureEnabled_("publicGist"))
+ parameters.private = true;
var params = [];
for (var name in parameters)
@@ -223,8 +246,22 @@ var enableFeatures = function()
var loadExtendedCommit = function(commit)
{
- if (commit.author_email)
- $("authorID").innerHTML = commit.author_name + " <
" + commit.author_email + ">";
+ var formatEmail = function(name, email) {
+ return email ? name + " <
" + email + ">" : name;
+ }
+
+ $("authorID").innerHTML = formatEmail(commit.author_name, commit.author_email);
+
+ if (commit.committer_name != commit.author_name) {
+ $("committerID").parentNode.style.display = "";
+ $("committerID").innerHTML = formatEmail(commit.committer_name, commit.committer_email);
+
+ $("committerDate").parentNode.style.display = "";
+ $("committerDate").innerHTML = commit.committer_date;
+ } else {
+ $("committerID").parentNode.style.display = "none";
+ $("committerDate").parentNode.style.display = "none";
+ }
$("date").innerHTML = commit.author_date;
$("message").innerHTML = commit.message.replace(/\n/g,"
");
diff --git a/html/views/history/index.html b/html/views/history/index.html
index c120e01..65117c3 100644
--- a/html/views/history/index.html
+++ b/html/views/history/index.html
@@ -14,7 +14,7 @@
@@ -33,6 +33,14 @@
Date: |
Pieter de Bie |
+
+ Committer: |
+ Pieter de Bie |
+
+
+ Commit Date: |
+ Pieter de Bie |
+
Subject: |
Pieter de Bie |
@@ -48,7 +56,7 @@
diff --git a/speedtest.m b/speedtest.m
index 2d96213..18173bb 100644
--- a/speedtest.m
+++ b/speedtest.m
@@ -6,18 +6,36 @@
// Copyright 2008 Pieter de Bie. All rights reserved.
//
-#import "speedtest.h"
#import "PBGitRepository.h"
-#import "PBGitRevList.h"
+#import "PBGitRevSpecifier.h"
+#import "PBGitCommit.h"
+#import "PBGitRevPool.h"
int main()
{
- PBGitRepository *repo = [[PBGitRepository alloc] initWithURL:[NSURL URLWithString:@"file:///Users/pieter/projects/git"]];
- PBGitRevList *revList = [[PBGitRevList alloc] initWithRepository:repo];
- PBGitRevSpecifier *revSpecifier = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"master"]];
+ PBGitRepository *repo = [[PBGitRepository alloc] initWithURL:[NSURL URLWithString:@"file:///Users/pieter/projects/External/git"]];
+ //PBGitRevList *revList = [[PBGitRevList alloc] initWithRepository:repo];
+ PBGitRevSpecifier *revSpecifier = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"HEAD"]];
+ PBGitRevPool *revPool = [[PBGitRevPool alloc] initWithRepository:repo];
//[repo reloadRefs];
- [revList walkRevisionListWithSpecifier:revSpecifier];
-
+ [revPool loadRevisions:revSpecifier];
+// [revPool listCommits];
+
+ NSDate *start = [NSDate date];
+ PBGitCommit *commit = [revPool commitWithSha:@"6270bae2fe7b13a0809061760ddb2b03ce2ca33a"];
+ NSMutableArray *array = [NSMutableArray array];
+ while (commit)
+ {
+ [array addObject:[commit realSha]];
+ if (commit.nParents)
+ commit = [revPool commitWithOid:commit.parentShas[0]];
+ else
+ commit = NULL;
+ }
+ NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:start];
+
+ NSLog(@"Walked all refs in %f seconds", duration);
+ NSLog(@"%@", [array componentsJoinedByString:@"\n"]);
return 0;
}
\ No newline at end of file