diff options
Diffstat (limited to 'servers/gitlab_python/src/mcp_server_gitlab_python/server.py')
| -rw-r--r-- | servers/gitlab_python/src/mcp_server_gitlab_python/server.py | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/servers/gitlab_python/src/mcp_server_gitlab_python/server.py b/servers/gitlab_python/src/mcp_server_gitlab_python/server.py index 20bfffa..e8231c0 100644 --- a/servers/gitlab_python/src/mcp_server_gitlab_python/server.py +++ b/servers/gitlab_python/src/mcp_server_gitlab_python/server.py @@ -192,29 +192,22 @@ class GitLabPythonServer: try: proj = self.gl.projects.get(project) mr = proj.mergerequests.get(mr_iid) - diffs = mr.diffs.list(get_all=True) - logger.debug(f"Fetched {len(diffs)} diffs for MR {mr_iid} in project {project}") - if diffs: - logger.debug(f"First diff type: {type(diffs[0])}, attributes: {dir(diffs[0])}") + changes = mr.changes() + logger.debug(f"Fetched {len(changes.get('changes', []))} file changes for MR {mr_iid} in project {project}") diff_content = "" - for i, diff in enumerate(diffs): - logger.debug(f"Processing diff #{i}: type={type(diff)}, attrs={dir(diff)}") - if all(hasattr(diff, attr) for attr in ("old_path", "new_path", "diff")): - old_path = diff.old_path - new_path = diff.new_path - diff_text = diff.diff - logger.debug(f"Using direct attributes for diff #{i}: old_path={old_path}, new_path={new_path}") - else: - logger.debug(f"Fetching full diff object for diff #{i} (id={getattr(diff, 'id', None)})") - full_diff = mr.diffs.get(diff.id) - old_path = full_diff.old_path - new_path = full_diff.new_path - diff_text = full_diff.diff + for i, change in enumerate(changes.get('changes', [])): + logger.debug(f"Processing change #{i}: {change}") + old_path = change.get('old_path', '/dev/null') or '/dev/null' + new_path = change.get('new_path', '/dev/null') or '/dev/null' + diff_text = change.get('diff', None) + if diff_text is None: + logger.warning(f"Skipping change #{i} due to missing diff text: {change}") + continue if any( old_path.endswith(ext) or new_path.endswith(ext) for ext in filter_extensions ): - logger.debug(f"Skipping diff #{i} due to filter extension: {old_path}, {new_path}") + logger.debug(f"Skipping change #{i} due to filter extension: {old_path}, {new_path}") continue diff_content += f"diff --git a/{old_path} b/{new_path}\n" diff_content += diff_text + "\n" |
