mirror of
https://code.forgejo.org/actions/git-backporting
synced 2025-03-15 06:36:59 +01:00
fix: --auth when --git-user contains space (#95)
Since --git-user is a user-facing name, it's common to include a space in it. As such, it's not suitable to use as a username in a Git remote URL. GitLab documented that it doesn't (yet?) check for username [1], and from my testing GitHub doesn't seem to care either. So just use an arbitrary name as a username. [1] https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
This commit is contained in:
parent
d4dc510af1
commit
9bcd6e6b55
4 changed files with 27 additions and 6 deletions
5
dist/cli/index.js
vendored
5
dist/cli/index.js
vendored
|
@ -493,8 +493,9 @@ class GitCLIService {
|
||||||
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
||||||
*/
|
*/
|
||||||
remoteWithAuth(remoteURL) {
|
remoteWithAuth(remoteURL) {
|
||||||
if (this.auth && this.gitData.user) {
|
if (this.auth) {
|
||||||
return remoteURL.replace("://", `://${this.gitData.user}:${this.auth}@`);
|
// Anything will work as a username.
|
||||||
|
return remoteURL.replace("://", `://token:${this.auth}@`);
|
||||||
}
|
}
|
||||||
// return remote as it is
|
// return remote as it is
|
||||||
return remoteURL;
|
return remoteURL;
|
||||||
|
|
5
dist/gha/index.js
vendored
5
dist/gha/index.js
vendored
|
@ -463,8 +463,9 @@ class GitCLIService {
|
||||||
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
||||||
*/
|
*/
|
||||||
remoteWithAuth(remoteURL) {
|
remoteWithAuth(remoteURL) {
|
||||||
if (this.auth && this.gitData.user) {
|
if (this.auth) {
|
||||||
return remoteURL.replace("://", `://${this.gitData.user}:${this.auth}@`);
|
// Anything will work as a username.
|
||||||
|
return remoteURL.replace("://", `://token:${this.auth}@`);
|
||||||
}
|
}
|
||||||
// return remote as it is
|
// return remote as it is
|
||||||
return remoteURL;
|
return remoteURL;
|
||||||
|
|
|
@ -35,8 +35,9 @@ export default class GitCLIService {
|
||||||
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
* @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
|
||||||
*/
|
*/
|
||||||
private remoteWithAuth(remoteURL: string): string {
|
private remoteWithAuth(remoteURL: string): string {
|
||||||
if (this.auth && this.gitData.user) {
|
if (this.auth) {
|
||||||
return remoteURL.replace("://", `://${this.gitData.user}:${this.auth}@`);
|
// Anything will work as a username.
|
||||||
|
return remoteURL.replace("://", `://token:${this.auth}@`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return remote as it is
|
// return remote as it is
|
||||||
|
|
|
@ -123,4 +123,22 @@ describe("git cli service", () => {
|
||||||
const post = spawnSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], { cwd }).stdout.toString().trim();
|
const post = spawnSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], { cwd }).stdout.toString().trim();
|
||||||
expect(post).toEqual("tbranch");
|
expect(post).toEqual("tbranch");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("git clone set url with auth correctly for API token", async () => {
|
||||||
|
const git2 = new GitCLIService("api-token", {
|
||||||
|
user: "Backporting bot",
|
||||||
|
email: "bot@example.com",
|
||||||
|
});
|
||||||
|
const cwd2 = `${__dirname}/test-api-token`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await git2.clone(`file://${cwd}`, cwd2, "main");
|
||||||
|
const remoteURL = spawnSync("git", ["remote", "get-url", "origin"], { cwd: cwd2 }).stdout.toString().trim();
|
||||||
|
|
||||||
|
expect(remoteURL).toContain("api-token");
|
||||||
|
expect(remoteURL).not.toContain("Backporting bot");
|
||||||
|
} finally {
|
||||||
|
fs.rmSync(cwd2, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
Loading…
Add table
Reference in a new issue