threads / patch / 8574

patch, 2 partsgitview: Fix the blame interface.

Subject: [PATCH 1/2] gitview: Fix the blame interface.

## tl;dr

5 messages between Jun 12, 2007 and Jun 13, 2007. Diffs are folded; open one to read it.

replies: 4people: 2as markdown or json

Aneesh Kumar K.V· Jun 12, 2007, 17:35 UTC · lore

The async reading from the pipe was skipping some of the input lines. Fix the same by making sure that we add the partial content of the previous read to the newly read data.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
---
 contrib/gitview/gitview |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)
Show changes to contrib/gitview/gitview +16 −2
diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 098cb01..286e974 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -352,6 +352,7 @@ class AnnotateWindow(object):
 		self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
 		self.window.set_border_width(0)
 		self.window.set_title("Git repository browser annotation window")
+		self.prev_read = ""
 
 		# Use two thirds of the screen by default
 		screen = self.window.get_screen()
@@ -401,7 +402,11 @@ class AnnotateWindow(object):
 	def data_ready(self, source, condition):
 		while (1):
 			try :
-				buffer = source.read(8192)
+				# A simple readline doesn't work
+				# a readline bug ??
+				buffer=""
+				buffer = source.read(100)
+
 			except:
 				# resource temporary not available
 				return True
@@ -411,6 +416,14 @@ class AnnotateWindow(object):
 				source.close()
 				return False
 
+			if (self.prev_read != ""):
+				buffer = self.prev_read + buffer
+				self.prev_read = ""
+
+			if (buffer[len(buffer) -1] != '\n'):
+				self.prev_read = buffer[buffer.rindex("\n"):(len(buffer))]
+				buffer = buffer[0:buffer.rindex("\n")]
+
 			for buff in buffer.split("\n"):
 				annotate_line = re.compile('^([0-9a-f]{40}) (.+) (.+) (.+)$')
 				m = annotate_line.match(buff)
@@ -419,7 +432,8 @@ class AnnotateWindow(object):
 					m = annotate_line.match(buff)
 					if not m:
 						continue
-					filename = m.group(2)
+					else:
+						filename = m.group(2)
 				else:
 					self.commit_sha1 = m.group(1)
 					self.source_line = int(m.group(2))
-- 
1.5.2.1.239.g75d8-dirty
Aneesh Kumar K.V· Jun 12, 2007, 17:35 UTC · re: Aneesh Kumar K.V · lore

[PATCH 2/2] gitview: run blame with -M and -C

From: Aneesh Kumar K.V <aneesh.kumar@gmail.com>

pass -M and -C option to git-blame so that blame browsing works when the data is copied over from other files.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
---
 contrib/gitview/gitview |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to contrib/gitview/gitview +1 −1
diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 286e974..01128f4 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -530,7 +530,7 @@ class AnnotateWindow(object):
 
 		self.add_file_data(filename, commit_sha1, line_num)
 
-		fp = os.popen("git blame --incremental -- " + filename + " " + commit_sha1)
+		fp = os.popen("git blame --incremental -M -C -C -- " + filename + " " + commit_sha1)
 		flags = fcntl.fcntl(fp.fileno(), fcntl.F_GETFL)
 		fcntl.fcntl(fp.fileno(), fcntl.F_SETFL, flags | os.O_NONBLOCK)
 		self.io_watch_tag = gobject.io_add_watch(fp, gobject.IO_IN, self.data_ready)
-- 
1.5.2.1.239.g75d8-dirty
Junio C Hamano· Jun 13, 2007, 04:59 UTC · re: Aneesh Kumar K.V · lore

Re: [PATCH 2/2] gitview: run blame with -M and -C

"Aneesh Kumar K.V" <aneesh.kumar@gmail.com> writes:
Show 20 quoted lines
> From: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
>
> pass -M  and -C option to git-blame so that blame browsing
> works when the data is copied over from other files.
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
> ---
>  contrib/gitview/gitview |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
> index 286e974..01128f4 100755
> --- a/contrib/gitview/gitview
> +++ b/contrib/gitview/gitview
> @@ -530,7 +530,7 @@ class AnnotateWindow(object):
>  
>  		self.add_file_data(filename, commit_sha1, line_num)
>  
> -		fp = os.popen("git blame --incremental -- " + filename + " " + commit_sha1)
> +		fp = os.popen("git blame --incremental -M -C -C -- " + filename + " " + commit_sha1)

You do not have to say "-M -C -C"; "-C" would imply "-M" anyway.

Junio C Hamano· Jun 13, 2007, 04:58 UTC · re: Aneesh Kumar K.V · lore

Re: [PATCH 1/2] gitview: Fix the blame interface.

"Aneesh Kumar K.V" <aneesh.kumar@gmail.com> writes:
Show 10 quoted lines
> @@ -401,7 +402,11 @@ class AnnotateWindow(object):
>  	def data_ready(self, source, condition):
>  		while (1):
>  			try :
> -				buffer = source.read(8192)
> +				# A simple readline doesn't work
> +				# a readline bug ??
> +				buffer=""
> +				buffer = source.read(100)
> +
Are you sure about the first assignment?
Show 10 quoted lines
> @@ -419,7 +432,8 @@ class AnnotateWindow(object):
>  					m = annotate_line.match(buff)
>  					if not m:
>  						continue
> -					filename = m.group(2)
> +					else:
> +						filename = m.group(2)
>  				else:
>  					self.commit_sha1 = m.group(1)
>  					self.source_line = int(m.group(2))

The script is in contrib/ so I probably shouldn't be nitpicking, but for this particular hunk, I think (1) this is a no-op change, and (2) the original is easier to read.

Aneesh Kumar· Jun 13, 2007, 08:33 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/2] gitview: Fix the blame interface.

On 6/13/07, Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> "Aneesh Kumar K.V" <aneesh.kumar@gmail.com> writes:
>
> > @@ -401,7 +402,11 @@ class AnnotateWindow(object):
> >       def data_ready(self, source, condition):
> >               while (1):
> >                       try :
> > -                             buffer = source.read(8192)
> > +                             # A simple readline doesn't work
> > +                             # a readline bug ??
> > +                             buffer=""
> > +                             buffer = source.read(100)
> > +
>
> Are you sure about the first assignment?
>

That was a debug left over i guess. I will send an update patch which removed the same. The problem was an interrupted source.read/readline was returning old values.

Show 16 quoted lines
> > @@ -419,7 +432,8 @@ class AnnotateWindow(object):
> >                                       m = annotate_line.match(buff)
> >                                       if not m:
> >                                               continue
> > -                                     filename = m.group(2)
> > +                                     else:
> > +                                             filename = m.group(2)
> >                               else:
> >                                       self.commit_sha1 = m.group(1)
> >                                       self.source_line = int(m.group(2))
>
> The script is in contrib/ so I probably shouldn't be nitpicking,
> but for this particular hunk, I think (1) this is a no-op
> change, and (2) the original is easier to read.
>
>
I will update if you feel that way
-aneesh

← back to recent threads