fix(Repository): separated git dir for submodules

This commit is contained in:
leo 2020-07-23 14:04:42 +08:00
parent 39e55a3f2d
commit 646a80a395
5 changed files with 93 additions and 77 deletions

View file

@ -383,11 +383,10 @@ namespace SourceGit.UI {
#region MERGE_ABORTS
public void DetectMergeState() {
var gitDir = Path.Combine(repo.Path, ".git");
var cherryPickMerge = Path.Combine(gitDir, "CHERRY_PICK_HEAD");
var rebaseMerge = Path.Combine(gitDir, "REBASE_HEAD");
var revertMerge = Path.Combine(gitDir, "REVERT_HEAD");
var otherMerge = Path.Combine(gitDir, "MERGE_HEAD");
var cherryPickMerge = Path.Combine(repo.GitDir, "CHERRY_PICK_HEAD");
var rebaseMerge = Path.Combine(repo.GitDir, "REBASE_HEAD");
var revertMerge = Path.Combine(repo.GitDir, "REVERT_HEAD");
var otherMerge = Path.Combine(repo.GitDir, "MERGE_HEAD");
if (File.Exists(cherryPickMerge)) {
abortCommand = "cherry-pick";

View file

@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using System.Windows;
@ -255,7 +257,8 @@ namespace SourceGit.UI {
}
private void Start(object sender, RoutedEventArgs e) {
var stream = new FileStream(App.InteractiveRebaseTodo, FileMode.Create);
var temp = Path.GetTempFileName();
var stream = new FileStream(temp, FileMode.Create);
var writer = new StreamWriter(stream);
for (int i = Items.Count - 1; i >= 0; i--) {
@ -263,19 +266,19 @@ namespace SourceGit.UI {
switch ((InteractiveRebaseMode)item.Mode) {
case InteractiveRebaseMode.Pick:
writer.WriteLine($"pick {item.Commit.ShortSHA} {item.Subject}");
writer.WriteLine($"p {item.Commit.ShortSHA} {item.Subject}");
break;
case InteractiveRebaseMode.Reword:
writer.WriteLine($"reword {item.Commit.ShortSHA} {item.Subject}");
writer.WriteLine($"r {item.Commit.ShortSHA} {item.Subject}");
break;
case InteractiveRebaseMode.Squash:
writer.WriteLine($"squash {item.Commit.ShortSHA} {item.Subject}");
writer.WriteLine($"s {item.Commit.ShortSHA} {item.Subject}");
break;
case InteractiveRebaseMode.Fixup:
writer.WriteLine($"fixup {item.Commit.ShortSHA} {item.Subject}");
writer.WriteLine($"f {item.Commit.ShortSHA} {item.Subject}");
break;
case InteractiveRebaseMode.Drop:
writer.WriteLine($"drop {item.Commit.ShortSHA} {item.Subject}");
writer.WriteLine($"d {item.Commit.ShortSHA} {item.Subject}");
break;
}
}
@ -286,7 +289,8 @@ namespace SourceGit.UI {
stream.Close();
repo.SetWatcherEnabled(false);
var errs = repo.RunCommand($"-c sequence.editor=\"\\\"{App.InteractiveRebaseScript}\\\"\" rebase -i {from}^", null);
var editor = Process.GetCurrentProcess().MainModule.FileName;
var errs = repo.RunCommand($"-c sequence.editor=\"\\\"{editor}\\\" --interactive-rebase \\\"{temp}\\\"\" rebase -i {from}^", null);
repo.AssertCommand(errs);
Close();

View file

@ -96,7 +96,7 @@ namespace SourceGit.UI {
/// </summary>
public void LoadMergeMessage() {
if (string.IsNullOrEmpty(txtCommitMsg.Text)) {
var mergeMsgFile = Path.Combine(Repo.Path, ".git", "MERGE_MSG");
var mergeMsgFile = Path.Combine(Repo.GitDir, "MERGE_MSG");
if (!File.Exists(mergeMsgFile)) return;
var content = File.ReadAllText(mergeMsgFile);