commit 86002dd96cc41e1d71f2bcd80782da4e6c1f4d0e from: ale date: Thu Jul 23 20:20:08 2026 UTC Corrige bug real: el commit no ejecutaba got commit CheckinEnvironment.commit() tiene 3 sobrecargas con implementación default que se encadenan: la de 2 argumentos delega en la de CommitContext, que delega en la de NullableFunction, que devuelve null (no-op). Confirmado con javap -c sobre la interfaz real de la plataforma (261): la plataforma invoca directamente la sobrecarga con CommitContext al hacer 'Commit' desde la UI, no la de 2 argumentos. Como solo se había sobreescrito la de 2 argumentos, el pipeline de commit de IntelliJ terminaba llamando al no-op por defecto: reportaba 'checkinSuccessful' (sin excepciones) sin que 'got commit' se ejecutara nunca. Reportado en vivo por el usuario: el diff se veía bien, no había errores, pero got log no mostraba ningún commit nuevo. Fix: se sobreescribe también la sobrecarga con CommitContext, y ambas delegan a la misma lógica (doCommit). commit - b462f47784c7203ab8c1953668f7f02818d9d4f8 commit + 86002dd96cc41e1d71f2bcd80782da4e6c1f4d0e blob - 51c4a974493b4ffe3d9726a408194e64017e917f blob + 40efc533cd114b734a4c7cfa5294b1a91e929b22 --- src/main/kotlin/dev/nezzontli/gotvcs/GotCheckinEnvironment.kt +++ src/main/kotlin/dev/nezzontli/gotvcs/GotCheckinEnvironment.kt @@ -5,6 +5,7 @@ import com.intellij.openapi.vcs.FilePath import com.intellij.openapi.vcs.ProjectLevelVcsManager import com.intellij.openapi.vcs.VcsException import com.intellij.openapi.vcs.changes.Change +import com.intellij.openapi.vcs.changes.CommitContext import com.intellij.openapi.vcs.checkin.CheckinEnvironment import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile @@ -27,7 +28,23 @@ class GotCheckinEnvironment( override fun isRefreshAfterCommitNeeded(): Boolean = true - override fun commit(changes: MutableList, commitMessage: String): MutableList { + // CheckinEnvironment.commit() tiene 3 sobrecargas con implementación + // default: 2-args -> delega en la de CommitContext -> delega en la de + // NullableFunction -> devuelve null (no-op). La plataforma invoca + // directamente la de CommitContext, no la de 2 args -- si solo se + // sobreescribe esta última, el commit real nunca corre y el IDE igual + // reporta éxito (verificado en vivo con javap -c sobre la interfaz). + override fun commit(changes: MutableList, commitMessage: String): MutableList = + doCommit(changes, commitMessage) + + override fun commit( + changes: MutableList, + commitMessage: String, + commitContext: CommitContext, + feedback: MutableSet, + ): MutableList = doCommit(changes, commitMessage) + + private fun doCommit(changes: List, commitMessage: String): MutableList { val exceptions = mutableListOf() val filePaths = changes.mapNotNull { it.afterRevision?.file ?: it.beforeRevision?.file } for ((workDir, paths) in groupByRoot(filePaths)) {