public static void SetUpstreamSource (NGit.Repository repo, string branch, string remoteBranch) { StoredConfig config = repo.GetConfig (); if (string.IsNullOrEmpty (remoteBranch)) { config.UnsetSection ("branch", branch); config.Save (); return; } int i = remoteBranch.IndexOf ('/'); string upBranch; if (i == -1) { var tags = repo.GetTags (); if (tags.ContainsKey (remoteBranch)) upBranch = Constants.R_TAGS + remoteBranch; else upBranch = Constants.R_HEADS + remoteBranch; config.SetString ("branch", branch, "remote", "."); } else { upBranch = Constants.R_HEADS + remoteBranch.Substring (i + 1); config.SetString ("branch", branch, "remote", remoteBranch.Substring (0, i)); } config.SetString ("branch", branch, "merge", upBranch); config.Save (); }
public static string GetUpstreamSource (NGit.Repository repo, string branch) { StoredConfig config = repo.GetConfig (); string remote = config.GetString ("branch", branch, "remote"); string rbranch = config.GetString ("branch", branch, "merge"); if (string.IsNullOrEmpty (rbranch)) return null; if (rbranch.StartsWith (Constants.R_HEADS)) rbranch = rbranch.Substring (Constants.R_HEADS.Length); else if (rbranch.StartsWith (Constants.R_TAGS)) rbranch = rbranch.Substring (Constants.R_TAGS.Length); if (!string.IsNullOrEmpty (remote) && remote != ".") return remote + "/" + rbranch; else return rbranch; }