Package: plm
Version: 2.9.2-1.1
Severity: normal
X-Debbugs-Cc: [email protected]

Dear Maintainer,

PLM tracks student progress in an embedded jgit repository (plm.core.model.
tracking.GitSpy / GitUtils). Each run creates a commit.

If the user's git configuration enables commit signing (commit.gpgsign = true,
common on developer machines), jgit tries to sign these internal commits and
fails, dumping a stack trace to the student console on every run, in every
language mode (Java, Scala, ...):

org.eclipse.jgit.api.errors.ServiceUnavailableException: Signing service is
not available
at org.eclipse.jgit.api.CommitCommand.sign(CommitCommand.java:329)
at org.eclipse.jgit.api.CommitCommand.call(CommitCommand.java:283)
at plm.core.model.tracking.GitUtils.commit(...)
at plm.core.model.tracking.GitSpy.executed(...)
at plm.core.model.Game.fireProgressSpy(...)
at plm.core.model.LessonRunner.run(...)

To reproduce:
1. git config --global commit.gpgsign true (or have it set already)
2. Launch plm, run any exercise -> the stack trace above is printed.

Root cause: PLM's CommitCommand inherits the ambient commit.gpgsign setting.
Its internal bookkeeping commits should never be signed.

Fix: call setSign(false) on each CommitCommand in GitUtils (three call sites:
the empty initial commit, the manual-merge commit, and the per-run tracking
commit). A patch doing exactly this is prepared and will be forwarded upstream
(https://github.com/oster/PLM).

Thanks,
Juan

Reply via email to