提交 30a84487 编写于 作者: A Aneesh Kumar K.V 提交者: Junio C Hamano

gitview: Fix the blame interface.

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: NAneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 4175e9e3
......@@ -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,10 @@ 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 = source.read(100)
except:
# resource temporary not available
return True
......@@ -411,6 +415,19 @@ 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'):
try:
newline_index = buffer.rindex("\n")
except ValueError:
newline_index = 0
self.prev_read = buffer[newline_index:(len(buffer))]
buffer = buffer[0:newline_index]
for buff in buffer.split("\n"):
annotate_line = re.compile('^([0-9a-f]{40}) (.+) (.+) (.+)$')
m = annotate_line.match(buff)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册