diff --git a/notion_commit_hook.py b/notion_commit_hook.py index 981104d0..b5afa22a 100644 --- a/notion_commit_hook.py +++ b/notion_commit_hook.py @@ -1,32 +1,21 @@ +#!/usr/bin/env python3 +import os import sys import json import subprocess -import os -from datetime import datetime # datetime kann direkt importiert werden +from datetime import datetime -# Ermittle das Git-Projekt-Root-Verzeichnis -try: - PROJECT_ROOT = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip() - # Stelle sicher, dass PROJECT_ROOT am Anfang von sys.path steht - if PROJECT_ROOT not in sys.path: - sys.path.insert(0, PROJECT_ROOT) - # DEBUG prints - print(f"DEBUG: PROJECT_ROOT = {PROJECT_ROOT}", file=sys.stderr) - print(f"DEBUG: sys.path = {sys.path}", file=sys.stderr) -except subprocess.CalledProcessError: - print("Fehler: Nicht in einem Git-Repository. Kann notion_commit_hook nicht ausführen.", file=sys.stderr) - sys.exit(1) +# Fügen Sie das Projekt-Stammverzeichnis zum Python-Pfad hinzu +# Das ist das Verzeichnis, in dem sich das Hook-Skript befindet +sys.path.append(os.path.dirname(os.path.abspath(__file__))) try: - import dev_session - # Greife auf Funktionen über dev_session.function_name zu - append_blocks_to_notion_page = dev_session.append_blocks_to_notion_page - decimal_hours_to_hhmm = dev_session.decimal_hours_to_hhmm -except ImportError as e: - print(f"Fehler: Konnte dev_session.py nicht importieren. Stelle sicher, dass dev_session.py im Projekt-Root liegt. Details: {e}", file=sys.stderr) + from dev_session import append_blocks_to_notion_page, decimal_hours_to_hhmm +except ImportError: + print("Fehler: Konnte dev_session.py nicht importieren.", file=sys.stderr) sys.exit(1) -SESSION_DIR = os.path.join(PROJECT_ROOT, ".dev_session") +SESSION_DIR = ".dev_session" SESSION_FILE_PATH = os.path.join(SESSION_DIR, "SESSION_INFO") def get_last_commit_message() -> str: @@ -42,9 +31,18 @@ def get_last_commit_message() -> str: except (subprocess.CalledProcessError, FileNotFoundError): return "" +def is_merge_commit() -> bool: + """Prüft, ob der letzte Commit ein Merge-Commit ist.""" + try: + result = subprocess.run(["git", "rev-parse", "--quiet", "--verify", "MERGE_HEAD"], capture_output=True, check=False) + return result.returncode == 0 + except Exception: + return False + def main(): """Hauptfunktion des Git-Hooks.""" - if not os.path.exists(SESSION_FILE_PATH): + # Führe den Hook nur aus, wenn eine aktive Session existiert und es kein Merge-Commit ist + if not os.path.exists(SESSION_FILE_PATH) or is_merge_commit(): sys.exit(0) try: @@ -67,7 +65,7 @@ def main(): elapsed_time = datetime.now() - session_start_time elapsed_hours = elapsed_time.total_seconds() / 3600 elapsed_hhmm = decimal_hours_to_hhmm(elapsed_hours) - time_comment = f"⏱️ Arbeitszeit in dieser Session: {elapsed_hhmm}\\n" + time_comment = f"⏱️ Arbeitszeit in dieser Session: {elapsed_hhmm}\n" report_content = f"✅ New Commit:\n{time_comment}---\n{commit_message}" timestamp = datetime.now().strftime('%Y-%m-%d %H:%M') @@ -92,7 +90,8 @@ def main(): append_blocks_to_notion_page(token, task_id, notion_blocks) except (FileNotFoundError, json.JSONDecodeError): + # Wenn die Datei nicht existiert oder fehlerhaft ist, einfach beenden sys.exit(0) if __name__ == "__main__": - main() \ No newline at end of file + main()