Don't clobber the user's upstream settings (cherry-pick #26486) (#26528)

gcp-cherry-pick-bot[bot] and Mikayla Maki created

Cherry-picked Don't clobber the user's upstream settings (#26486)

It's not clobbering time :(

Release Notes:

- Git Beta: Fixed a bug where our push button would always overwrite the
current branch's upstream

Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Change summary

crates/git_ui/src/git_panel.rs | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)

Detailed changes

crates/git_ui/src/git_panel.rs 🔗

@@ -1918,10 +1918,18 @@ impl GitPanel {
         };
         telemetry::event!("Git Pushed");
         let branch = branch.clone();
+
         let options = if force_push {
-            PushOptions::Force
+            Some(PushOptions::Force)
         } else {
-            PushOptions::SetUpstream
+            match branch.upstream {
+                Some(Upstream {
+                    tracking: UpstreamTracking::Gone,
+                    ..
+                })
+                | None => Some(PushOptions::SetUpstream),
+                _ => None,
+            }
         };
         let remote = self.get_current_remote(window, cx);
 
@@ -1951,7 +1959,7 @@ impl GitPanel {
                 repo.push(
                     branch.name.clone(),
                     remote.name.clone(),
-                    Some(options),
+                    options,
                     askpass_delegate,
                     cx,
                 )