git_commit during a merge records one parent and leaves MERGE_HEAD in place
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
Direzione di ricerca
Il bug si trova in src/git/src/mcp_server_git/server.py, dove git_commit chiama repo.index.commit() senza gestire lo stato di merge. Inizia esaminando quella funzione e la firma di IndexFile.commit() di GitPython. Quando esiste MERGE_HEAD, leggi i suoi commit e passali come parent_commits, quindi cancella MERGE_HEAD, MERGE_MSG e MERGE_MODE. Aggiungi un test nella suite di test di git che esegue un merge con --no-commit, chiama git_commit e verifica che ci siano due genitori e nessuno stato di merge rimasto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
git_commit cannot conclude a merge. While a merge is in progress (MERGE_HEAD present, e.g. after git merge --no-commit or a resolved conflict), it writes a commit with one parent, HEAD, and leaves MERGE_HEAD (and MERGE_MSG) in place, so the repository stays in merge state and the merged branch's history is not recorded.
src/git/src/mcp_server_git/server.py, git_commit calls repo.index.commit(message). GitPython's IndexFile.commit() takes parent_commits=None, which means [repo.head.commit] only; it neither reads nor clears MERGE_HEAD.
Found in the Copilot review of #5007 (the fix for #4762), which keeps the empty-merge-commit case committable but, like the code before it, records it with one parent. This predates #5007: any merge resolved through git_commit has always been recorded this way.
To Reproduce
import git
# repo on main with a branch `side` that adds side.txt
repo.git.merge("side", "--no-commit", "--no-ff")
commit = repo.index.commit("merge side") # what git_commit does
len(commit.parents) # 1, git commit would give 2
(Path(repo.git_dir) / "MERGE_HEAD").exists() # True, merge still in progress
Expected behavior
While MERGE_HEAD is present, git_commit records HEAD plus every MERGE_HEAD commit as parents and clears the merge state, as git commit does (either by shelling out to git commit, or by passing parent_commits and removing MERGE_HEAD/MERGE_MSG/MERGE_MODE). A test asserts both parents and that MERGE_HEAD is gone.
Additional context
Related: #659 (a git_merge tool), which would make this path reachable from the server alone.
- Lingua principale
- TypeScript
- Stelle
- 91k
- Fork
- 11.8k
- Merge medio
- 6h 47m
- PR unite (30g)
- 74
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/servers
-
git: git_create_branch is marked non-destructive but silently resets an existing packed branchAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
modelcontextprotocol/servers#5059 ·
I maintainer di solito rispondono entro 1 giorno
-
mcp-server-fetch: `fetch` prompt returns JSON-RPC error code 0 with the raw exception text for an invalid URLForse già presa @DawnofGenX l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
modelcontextprotocol/servers#4914 ·
I maintainer di solito rispondono entro 1 giorno
-
CLAUDE.md: tool-naming rule (kebab-case) disagrees with filesystem and memory serversForse già presa @liang0417 l’ha presa 7 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
modelcontextprotocol/servers#4892 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Filesystem README recommends deprecated MCP Roots protocol for restricting directory accessForse già presa @its-amann l’ha presa 12 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
modelcontextprotocol/servers#4844 ·
I maintainer di solito rispondono entro 1 giorno
-
Docs: `fetch` installs npm packages during a tool call, which is worth stating for deploymentsForse già presa @teddiesloco l’ha presa 16 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
modelcontextprotocol/servers#4830 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelcontextprotocol/servers
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
wardian-app/Wardian#1603 ·
I maintainer di solito rispondono entro 1 giorno
-
Sign the pledgeAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
input-output-hk/devx-updates#168 ·
I maintainer di solito rispondono entro 1 giorno
-
triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
github/docs#46222 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
agent-ready area: config area: skills type: chore upstream: brain-kit
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
-
dev experience frontend good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cuttle-cards/cuttle#1403 ·
I maintainer di solito rispondono entro 1 giorno