Skip to content

Commit

Permalink
Fix bug in diff, decoding content properly
Browse files Browse the repository at this point in the history
  • Loading branch information
tomlin7 committed Nov 13, 2021
1 parent 3fb016e commit 5a2e6d3
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 61 deletions.
15 changes: 10 additions & 5 deletions src/lib/components/diff_viewer/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ def __init__(self, master, path, *args, **kwargs):
self.left['yscrollcommand'] = self.on_textscroll
self.right['yscrollcommand'] = self.on_textscroll

self.left.set_active(False)
self.left.tag_config("removal", background="#EC6066")
self.left.tag_config("addition", background="#eceaea")

self.right.tag_config("addition", background="#99C794")
self.left.tag_config("addition", background="#eceaea")

self.prepare_data()

self.differ = Differ(self)
self.show_diff()

self.left.set_active(False)

def on_scrollbar(self, *args):
self.left.yview(*args)
Expand All @@ -50,10 +54,11 @@ def on_textscroll(self, *args):
self.on_scrollbar('moveto', args[0])

def prepare_data(self):
lhs_data = self.base.git.repo.get_commit_filedata(self.path).split("\n")
self.lhs_data = [f"{line}\n" if line else "\n" for line in lhs_data]
with open(self.path, 'r') as f:
self.rhs_data = f.readlines()
self.lhs_data = f.readlines()


def show_diff(self):
self.diff = self.differ.get_diff(self.lhs_data, self.rhs_data)
for line in self.diff:
Expand All @@ -67,9 +72,9 @@ def show_diff(self):
elif marker == "-":
# line is only on the left
self.left.write(line[2:], "removal")
self.right.newline()
self.right.newline("removal")

elif marker == "+":
# line is only on the right
self.left.newline()
self.left.newline("addition")
self.right.write(line[2:], "addition")
5 changes: 1 addition & 4 deletions src/lib/components/diff_viewer/differ.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import difflib
import difflib, sys


class Differ(difflib.Differ):
Expand All @@ -9,6 +9,3 @@ def __init__(self, master, *args, **kwargs):

def get_diff(self, lhs, rhs):
return self.compare(lhs, rhs)

# diff = difflib.ndiff(self.string1.splitlines(), self.string2.splitlines())
# return list(diff)
57 changes: 12 additions & 45 deletions src/lib/components/git/repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,15 @@ class GitRepo(git.Repo):
def __init__(self, path, *args, **kwargs):
super().__init__(path, *args, **kwargs)
self.path = path

def get_commit_hash(self):
return self.head.commit.hexsha

def get_commit_message(self):
return self.head.commit.message

def get_commit_author(self):
return self.head.commit.author.name

def get_commit_date(self):
return self.head.commit.committed_date

def get_branch_name(self):
return self.active_branch.name

def get_branch_commit_hash(self):
return self.active_branch.commit.hexsha

def get_branch_commit_message(self):
return self.active_branch.commit.message

def get_branch_commit_author(self):
return self.active_branch.commit.author.name

def get_branch_commit_date(self):
return self.active_branch.commit.committed_date

def get_branch_remote_name(self):
return self.active_branch.remote_name

def get_branch_remote_url(self):
return self.active_branch.remote_url

def get_branch_remote_commit_hash(self):
return self.active_branch.remote_head.commit.hexsha

def get_branch_remote_commit_message(self):
return self.active_branch.remote_head.commit.message

def get_branch_remote_commit_author(self):
return self.active_branch.remote_head.commit.author.name

def get_branch_remote_commit_date(self):
return self.active_branch.remote_head.commit.committed_date

def get_untracked_files(self):
return self.untracked_files

def get_changed_files(self):
return [item.a_path for item in self.index.diff(None).iter_change_type('M')]

def get_latest_commit(self):
return self.head.commit

def get_commit_filedata(self, filename):
return self.head.commit.tree[filename].data_stream.read().decode('utf-8')
10 changes: 5 additions & 5 deletions src/lib/components/git/tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,20 @@ def clean_tree(self):

def add_files(self, parent, changed_files):
for file in changed_files:
oid = self.insert(parent, tk.END, text=file, values=[os.path.abspath(file)])
oid = self.insert(parent, tk.END, text=file, values=[file])

def add_tree(self, basename, files=None):
oid = self.insert('', tk.END, text=basename, open=True)
if files:
self.add_files(oid, files)

def open_repo(self, repo):
untracked_files = repo.untracked_files
staged_files = [item.a_path for item in repo.index.diff(None)]
changed_files = repo.get_changed_files()
untracked_files = repo.get_untracked_files()

self.clean_tree()
self.add_tree("Staged Changes", staged_files)
self.add_tree("Changes", untracked_files)
self.add_tree("Changes", changed_files)
self.add_tree("Untracked Files", untracked_files)

def open_repo_dir(self):
threading.Thread(target=self.open_repo, args=[self.master.core.repo]).start()
4 changes: 2 additions & 2 deletions src/lib/components/text/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ def clear(self):
def write(self, text, *args):
self.insert(tk.END, text, *args)

def newline(self):
self.write("\n")
def newline(self, *args):
self.write("\n", *args)

def get_all_text(self):
return self.get(1.0, tk.END)
Expand Down

0 comments on commit 5a2e6d3

Please sign in to comment.