Improve committer accuracy

Changes made by the SCM-Manager, like those through the editor and pull requests, now more accurately define the committer on the underlying changeset.

Committed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
This commit is contained in:
Konstantin Schaper
2023-04-06 10:16:41 +02:00
committed by SCM-Manager
parent 8eb2687e10
commit 7e83d34fc0
5 changed files with 31 additions and 9 deletions

View File

@@ -232,7 +232,7 @@ class AbstractGitCommand {
if (!status.isClean() || isInMerge()) {
return of(clone.commit()
.setAuthor(authorToUse.getName(), authorToUse.getMail())
.setCommitter("SCM-Manager", "noreply@scm-manager.org")
.setCommitter(authorToUse.getName(), authorToUse.getMail())
.setMessage(message)
.setSign(sign)
.setSigningKey(sign ? "SCM-MANAGER-DEFAULT-KEY" : null)

View File

@@ -24,6 +24,9 @@
package sonia.scm.repository.spi;
import com.github.sdorra.shiro.SubjectAware;
import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.ObjectId;
@@ -39,6 +42,7 @@ import sonia.scm.ScmConstraintViolationException;
import sonia.scm.repository.GitTestHelper;
import sonia.scm.repository.Person;
import sonia.scm.repository.RepositoryHookType;
import sonia.scm.user.User;
import java.io.File;
import java.io.IOException;
@@ -55,6 +59,8 @@ import static org.mockito.Mockito.verify;
public class GitModifyCommandTest extends GitModifyCommandTestBase {
private static final String REALM = "AdminRealm";
@Override
protected String getZippedRepositoryResource() {
return "sonia/scm/repository/spi/scm-git-spi-move-test.zip";
@@ -75,6 +81,8 @@ public class GitModifyCommandTest extends GitModifyCommandTestBase {
RevCommit lastCommit = getLastCommit(git);
assertThat(lastCommit.getFullMessage()).isEqualTo("Make some change");
assertThat(lastCommit.getAuthorIdent().getName()).isEqualTo("Dirk Gently");
assertThat(lastCommit.getCommitterIdent().getName()).isEqualTo("Dirk Gently");
assertThat(lastCommit.getCommitterIdent().getEmailAddress()).isEqualTo("dirk@holistic.det");
assertThat(newRef).isEqualTo(lastCommit.toObjectId().name());
}
}
@@ -528,4 +536,11 @@ public class GitModifyCommandTest extends GitModifyCommandTestBase {
return request;
}
private ModifyCommandRequest prepareModifyCommandRequestWithoutAuthorEmail() {
ModifyCommandRequest request = new ModifyCommandRequest();
request.setAuthor(new Person("Dirk Gently", ""));
request.setCommitMessage("Make some change");
return request;
}
}