From 25fc4fb0f456eabc3dd60fc3a8195017c3d8879d Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 22:28:11 +0000 Subject: [PATCH] Initial upload: TermDiagram v0.1.0 --- src/termdiagram/git/diff_analyzer.py | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/termdiagram/git/diff_analyzer.py diff --git a/src/termdiagram/git/diff_analyzer.py b/src/termdiagram/git/diff_analyzer.py new file mode 100644 index 0000000..8652c03 --- /dev/null +++ b/src/termdiagram/git/diff_analyzer.py @@ -0,0 +1,35 @@ +from typing import Dict, Any, Optional +from git import Repo + + +class ArchitectureDiffAnalyzer: + def __init__(self, repo_path: str): + self.repo_path = repo_path + self.repo: Optional[Repo] = None + + def initialize(self) -> bool: + try: + self.repo = Repo(self.repo_path) + return not self.repo.bare + except: + return False + + def get_change_report(self, old_commit: str, new_commit: str) -> str: + if not self.repo: + if not self.initialize(): + return "Error: Not a git repository" + + try: + old_tree = self.repo.commit(old_commit).tree + new_tree = self.repo.commit(new_commit).tree + + diffs = old_tree.diff(new_tree) + + report = [f"Architecture changes from {old_commit} to {new_commit}", "=" * 60] + + for diff in diffs: + report.append(f" {diff.a_path} -> {diff.b_path}") + + return "\n".join(report) + except Exception as e: + return f"Error comparing commits: {e}"