@@ -85071,6 +85071,24 @@ var getGitRemotes = async () => {
8507185071 const { stdout } = await execa("git", ["remote"]);
8507285072 return stdout.split("\n").filter((remote) => Boolean(remote.trim()));
8507385073};
85074+ var hasUpstreamBranch = async () => {
85075+ try {
85076+ await execa("git", ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]);
85077+ return true;
85078+ } catch {
85079+ return false;
85080+ }
85081+ };
85082+ var getCurrentBranch = async () => {
85083+ const { stdout } = await execa("git", ["branch", "--show-current"]);
85084+ return stdout.trim();
85085+ };
85086+ var displayPushUrl = (stderr2) => {
85087+ const urlMatch = stderr2.match(/https?:\/\/\S+/);
85088+ if (urlMatch) {
85089+ ce(`${source_default.cyan("Create a pull request:")} ${urlMatch[0]}`);
85090+ }
85091+ };
8507485092var checkMessageTemplate = (extraArgs2) => {
8507585093 for (const key in extraArgs2) {
8507685094 if (extraArgs2[key].includes(config6.OCO_MESSAGE_TEMPLATE_PLACEHOLDER))
@@ -85142,8 +85160,13 @@ ${source_default.grey("\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2
8514285160 const remotes = await getGitRemotes();
8514385161 if (config6.OCO_GITPUSH === false) return;
8514485162 if (!remotes.length) {
85145- const { stdout: stdout2 } = await execa("git", ["push"]);
85163+ const pushArgs = ["push"];
85164+ if (!await hasUpstreamBranch()) {
85165+ pushArgs.push("--set-upstream", "origin", await getCurrentBranch());
85166+ }
85167+ const { stdout: stdout2, stderr: stderr2 } = await execa("git", pushArgs);
8514685168 if (stdout2) ce(stdout2);
85169+ displayPushUrl(stderr2);
8514785170 process.exit(0);
8514885171 }
8514985172 if (remotes.length === 1) {
@@ -85154,15 +85177,16 @@ ${source_default.grey("\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2
8515485177 if (isPushConfirmedByUser) {
8515585178 const pushSpinner = le();
8515685179 pushSpinner.start(`Running 'git push ${remotes[0]}'`);
85157- const { stdout: stdout2 } = await execa("git ", [
85158- "push",
85159- "--verbose",
85160- remotes[0]
85161- ] );
85180+ const pushArgs = ["push", "--verbose ", remotes[0]];
85181+ if (!await hasUpstreamBranch()) {
85182+ pushArgs.push( "--set-upstream", await getCurrentBranch());
85183+ }
85184+ const { stdout: stdout2, stderr: stderr2 } = await execa("git", pushArgs );
8516285185 pushSpinner.stop(
8516385186 `${source_default.green("\u2714")} Successfully pushed all commits to ${remotes[0]}`
8516485187 );
8516585188 if (stdout2) ce(stdout2);
85189+ displayPushUrl(stderr2);
8516685190 } else {
8516785191 ce("`git push` aborted");
8516885192 process.exit(0);
@@ -85180,13 +85204,18 @@ ${source_default.grey("\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2
8518085204 if (selectedRemote !== skipOption) {
8518185205 const pushSpinner = le();
8518285206 pushSpinner.start(`Running 'git push ${selectedRemote}'`);
85183- const { stdout: stdout2 } = await execa("git", ["push", selectedRemote]);
85207+ const pushArgs = ["push", selectedRemote];
85208+ if (!await hasUpstreamBranch()) {
85209+ pushArgs.push("--set-upstream", await getCurrentBranch());
85210+ }
85211+ const { stdout: stdout2, stderr: stderr2 } = await execa("git", pushArgs);
8518485212 if (stdout2) ce(stdout2);
8518585213 pushSpinner.stop(
8518685214 `${source_default.green(
8518785215 "\u2714"
8518885216 )} successfully pushed all commits to ${selectedRemote}`
8518985217 );
85218+ displayPushUrl(stderr2);
8519085219 }
8519185220 }
8519285221 } else {
0 commit comments