aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-24 01:14:41 -0800
committerJunio C Hamano <junkio@cox.net>2006-02-24 01:14:41 -0800
commite6a933bdb7fd1f052a4b84fb4077f882cece40c6 (patch)
tree7e35842e2dd571573649c433b73549ee2ccb1465
parent207a1f3ce9894ad6fab59077b9cec1adc70ed6c5 (diff)
parent3efaa937a52aff14ca35207fd3a8a4d1d1ed2067 (diff)
downloadgit-e6a933bdb7fd1f052a4b84fb4077f882cece40c6.tar.gz
git-e6a933bdb7fd1f052a4b84fb4077f882cece40c6.tar.xz
Merge fixes from master
-rwxr-xr-xcontrib/gitview/gitview48
-rwxr-xr-xgit-clone.sh2
-rwxr-xr-xgit-fmt-merge-msg.perl31
3 files changed, 41 insertions, 40 deletions
diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 4b52eb7dc..b04df7416 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -823,6 +823,7 @@ class GitView:
self.colours = {}
self.nodepos = {}
self.incomplete_line = {}
+ self.commits = []
index = 0
last_colour = 0
@@ -840,12 +841,7 @@ class GitView:
commit = Commit(commit_lines)
if (commit != None ):
- (out_line, last_colour, last_nodepos) = self.draw_graph(commit,
- index, out_line,
- last_colour,
- last_nodepos)
- self.index[commit.commit_sha1] = index
- index += 1
+ self.commits.append(commit)
# Skip the '\0
commit_lines = []
@@ -854,6 +850,14 @@ class GitView:
fp.close()
+ for commit in self.commits:
+ (out_line, last_colour, last_nodepos) = self.draw_graph(commit,
+ index, out_line,
+ last_colour,
+ last_nodepos)
+ self.index[commit.commit_sha1] = index
+ index += 1
+
self.treeview.set_model(self.model)
self.treeview.show()
@@ -869,13 +873,6 @@ class GitView:
last_nodepos = 0
# Add the incomplete lines of the last cell in this
- for sha1 in self.incomplete_line.keys():
- if ( sha1 != commit.commit_sha1):
- for pos in self.incomplete_line[sha1]:
- in_line.append((pos, pos, self.colours[sha1]))
- else:
- del self.incomplete_line[sha1]
-
try:
colour = self.colours[commit.commit_sha1]
except KeyError:
@@ -897,6 +894,14 @@ class GitView:
self.colours[commit.parent_sha1[0]] = colour
self.nodepos[commit.parent_sha1[0]] = node_pos
+ for sha1 in self.incomplete_line.keys():
+ if ( sha1 != commit.commit_sha1):
+ self.draw_incomplete_line(sha1, node_pos,
+ out_line, in_line, index)
+ else:
+ del self.incomplete_line[sha1]
+
+
in_line.append((node_pos, self.nodepos[commit.parent_sha1[0]],
self.colours[commit.parent_sha1[0]]))
@@ -936,6 +941,23 @@ class GitView:
except KeyError:
self.incomplete_line[sha1] = [self.nodepos[sha1]]
+ def draw_incomplete_line(self, sha1, node_pos, out_line, in_line, index):
+ for idx, pos in enumerate(self.incomplete_line[sha1]):
+ if(pos == node_pos):
+ out_line.append((pos,
+ pos+0.5, self.colours[sha1]))
+ self.incomplete_line[sha1][idx] = pos = pos+0.5
+ try:
+ next_commit = self.commits[index+1]
+ if (next_commit.commit_sha1 == sha1 and pos != int(pos)):
+ # join the line back to the node point
+ # This need to be done only if we modified it
+ in_line.append((pos, pos-0.5, self.colours[sha1]))
+ continue;
+ except IndexError:
+ pass
+ in_line.append((pos, pos, self.colours[sha1]))
+
def _go_clicked_cb(self, widget, revid):
"""Callback for when the go button for a parent is clicked."""
diff --git a/git-clone.sh b/git-clone.sh
index a0590884b..4ed861d57 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -118,7 +118,7 @@ dir="$2"
[ -e "$dir" ] && echo "$dir already exists." && usage
mkdir -p "$dir" &&
D=$(cd "$dir" && pwd) &&
-trap 'err=$?; rm -r $D; exit $err' exit
+trap 'err=$?; cd ..; rm -r "$D"; exit $err' exit
case "$bare" in
yes) GIT_DIR="$D" ;;
*) GIT_DIR="$D/.git" ;;
diff --git a/git-fmt-merge-msg.perl b/git-fmt-merge-msg.perl
index c13af4884..dae383f23 100755
--- a/git-fmt-merge-msg.perl
+++ b/git-fmt-merge-msg.perl
@@ -28,28 +28,13 @@ sub andjoin {
}
sub repoconfig {
- my $val;
- eval {
- my $pid = open(my $fh, '-|');
- if (!$pid) {
- exec('git-repo-config', '--get', 'merge.summary');
- }
- ($val) = <$fh>;
- close $fh;
- };
+ my ($val) = qx{git-repo-config --get merge.summary};
return $val;
}
sub current_branch {
- my $fh;
- my $pid = open($fh, '-|');
- die "$!" unless defined $pid;
- if (!$pid) {
- exec('git-symbolic-ref', 'HEAD') or die "$!";
- }
- my ($bra) = <$fh>;
+ my ($bra) = qx{git-symbolic-ref HEAD};
chomp($bra);
- close $fh or die "$!";
$bra =~ s|^refs/heads/||;
if ($bra ne 'master') {
$bra = " into $bra";
@@ -61,18 +46,12 @@ sub current_branch {
sub shortlog {
my ($tip) = @_;
- my ($fh, @result);
- my $pid = open($fh, '-|');
- die "$!" unless defined $pid;
- if (!$pid) {
- exec('git-log', '--topo-order',
- '--pretty=oneline', $tip, '^HEAD') or die "$!";
- }
- while (<$fh>) {
+ my @result;
+ foreach ( qx{git-log --topo-order --pretty=oneline $tip ^HEAD} ) {
s/^[0-9a-f]{40}\s+//;
push @result, $_;
}
- close $fh or die "$!";
+ die "git-log failed\n" if $?;
return @result;
}