diff --git a/.changeset/smooth-camels-melt.md b/.changeset/smooth-camels-melt.md new file mode 100644 index 0000000000..bd816827a4 --- /dev/null +++ b/.changeset/smooth-camels-melt.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +The `branch` command has been added to the `Git` isomorphic-git wrapper. diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 40bd885fe8..600e3edef8 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -342,6 +342,8 @@ export class Git { force?: boolean; }): Promise; // (undocumented) + branch(options: { dir: string; ref: string }): Promise; + // (undocumented) checkout(options: { dir: string; ref: string }): Promise; clone(options: { url: string; diff --git a/packages/backend-common/src/scm/git.test.ts b/packages/backend-common/src/scm/git.test.ts index e9c66a896e..fdd3c7dbc8 100644 --- a/packages/backend-common/src/scm/git.test.ts +++ b/packages/backend-common/src/scm/git.test.ts @@ -95,6 +95,22 @@ describe('Git', () => { }); }); + describe('branch', () => { + it('should call isomorphic-git with the correct arguments', async () => { + const git = Git.fromAuth({}); + const dir = 'mockdirectory'; + const ref = 'master'; + + await git.branch({ dir, ref }); + + expect(isomorphic.branch).toHaveBeenCalledWith({ + fs, + dir, + ref, + }); + }); + }); + describe('commit', () => { it('should call isomorphic-git with the correct arguments', async () => { const git = Git.fromAuth({}); diff --git a/packages/backend-common/src/scm/git.ts b/packages/backend-common/src/scm/git.ts index 8a72c7af89..0c9252cb64 100644 --- a/packages/backend-common/src/scm/git.ts +++ b/packages/backend-common/src/scm/git.ts @@ -94,6 +94,13 @@ export class Git { return git.checkout({ fs, dir, ref }); } + async branch(options: { dir: string; ref: string }): Promise { + const { dir, ref } = options; + this.config.logger?.info(`Creating branch {dir=${dir},ref=${ref}`); + + return git.branch({ fs, dir, ref }); + } + async commit(options: { dir: string; message: string;