mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-23 20:47:25 -08:00
refactor: change the way to refresh repository's data.
* mark dirty instead of calling refresh method directly * force mark branches data dirty after remotes changed
This commit is contained in:
parent
3eb8a82005
commit
a89760c7a5
6 changed files with 33 additions and 17 deletions
|
@ -53,8 +53,12 @@ namespace SourceGit.Models {
|
|||
}
|
||||
}
|
||||
|
||||
public void MarkWorkingCopyRefreshed() {
|
||||
_updateWC = 0;
|
||||
public void MarkBranchDirtyManually() {
|
||||
_updateBranch = DateTime.Now.ToFileTime() - 1;
|
||||
}
|
||||
|
||||
public void MarkWorkingCopyDirtyManually() {
|
||||
_updateWC = DateTime.Now.ToFileTime() - 1;
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
|
|
|
@ -70,7 +70,10 @@ namespace SourceGit.ViewModels {
|
|||
new Commands.Config(_repo.FullPath).Set($"remote.{_name}.sshkey", SSHKey);
|
||||
}
|
||||
}
|
||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
||||
CallUIThread(() => {
|
||||
_repo.MarkBranchesDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
});
|
||||
return succ;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -19,7 +19,10 @@ namespace SourceGit.ViewModels {
|
|||
|
||||
return Task.Run(() => {
|
||||
var succ = new Commands.Remote(_repo.FullPath).Delete(Remote.Name);
|
||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
||||
CallUIThread(() => {
|
||||
_repo.MarkBranchesDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
});
|
||||
return succ;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -306,6 +306,14 @@ namespace SourceGit.ViewModels {
|
|||
if (_watcher != null) _watcher.SetEnabled(enabled);
|
||||
}
|
||||
|
||||
public void MarkBranchesDirtyManually() {
|
||||
if (_watcher != null) _watcher.MarkBranchDirtyManually();
|
||||
}
|
||||
|
||||
public void MarkWorkingCopyDirtyManually() {
|
||||
if (_watcher != null) _watcher.MarkWorkingCopyDirtyManually();
|
||||
}
|
||||
|
||||
public void NavigateToCommit(string sha) {
|
||||
if (_histories != null) {
|
||||
SelectedViewIndex = 0;
|
||||
|
@ -357,7 +365,7 @@ namespace SourceGit.ViewModels {
|
|||
} else if (File.Exists(otherMerge)) {
|
||||
mode = "merge";
|
||||
} else {
|
||||
await Task.Run(RefreshWorkingCopyChanges);
|
||||
MarkWorkingCopyDirtyManually();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -394,7 +402,7 @@ namespace SourceGit.ViewModels {
|
|||
} else if (File.Exists(Path.Combine(_gitDir, "MERGE_HEAD"))) {
|
||||
cmd.Args = "merge --abort";
|
||||
} else {
|
||||
await Task.Run(RefreshWorkingCopyChanges);
|
||||
MarkWorkingCopyDirtyManually();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -491,8 +499,6 @@ namespace SourceGit.ViewModels {
|
|||
HasUnsolvedConflict = hasUnsolvedConflict;
|
||||
OnPropertyChanged(nameof(WorkingCopyChangesCount));
|
||||
});
|
||||
|
||||
_watcher.MarkWorkingCopyRefreshed();
|
||||
}
|
||||
|
||||
public void RefreshStashes() {
|
||||
|
|
|
@ -246,7 +246,7 @@ namespace SourceGit.ViewModels {
|
|||
await Task.Run(() => new Commands.Add(_repo.FullPath, step).Exec());
|
||||
}
|
||||
}
|
||||
_repo.RefreshWorkingCopyChanges();
|
||||
_repo.MarkWorkingCopyDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
IsStaging = false;
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ namespace SourceGit.ViewModels {
|
|||
await Task.Run(() => new Commands.Reset(_repo.FullPath, step).Exec());
|
||||
}
|
||||
}
|
||||
_repo.RefreshWorkingCopyChanges();
|
||||
_repo.MarkWorkingCopyDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
IsUnstaging = false;
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ namespace SourceGit.ViewModels {
|
|||
if (succ) {
|
||||
await Task.Run(() => new Commands.Add(_repo.FullPath, [ctx.Change]).Exec());
|
||||
}
|
||||
_repo.RefreshWorkingCopyChanges();
|
||||
_repo.MarkWorkingCopyDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
}
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ namespace SourceGit.ViewModels {
|
|||
if (succ) {
|
||||
await Task.Run(() => new Commands.Add(_repo.FullPath, [ctx.Change]).Exec());
|
||||
}
|
||||
_repo.RefreshWorkingCopyChanges();
|
||||
_repo.MarkWorkingCopyDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
}
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ namespace SourceGit.ViewModels {
|
|||
PopupHost.ShowAndStartPopup(new Push(_repo, null));
|
||||
}
|
||||
}
|
||||
_repo.RefreshWorkingCopyChanges();
|
||||
_repo.MarkWorkingCopyDirtyManually();
|
||||
_repo.SetWatcherEnabled(true);
|
||||
IsCommitting = false;
|
||||
}
|
||||
|
|
|
@ -734,7 +734,7 @@ namespace SourceGit.Views {
|
|||
new Commands.Apply(ctx.RepositoryPath, tmpFile, true, "nowarn", "--cache --index").Exec();
|
||||
File.Delete(tmpFile);
|
||||
|
||||
repo.RefreshWorkingCopyChanges();
|
||||
repo.MarkWorkingCopyDirtyManually();
|
||||
repo.SetWatcherEnabled(true);
|
||||
e.Handled = true;
|
||||
};
|
||||
|
@ -760,7 +760,7 @@ namespace SourceGit.Views {
|
|||
new Commands.Apply(ctx.RepositoryPath, tmpFile, true, "nowarn", "--reverse").Exec();
|
||||
File.Delete(tmpFile);
|
||||
|
||||
repo.RefreshWorkingCopyChanges();
|
||||
repo.MarkWorkingCopyDirtyManually();
|
||||
repo.SetWatcherEnabled(true);
|
||||
e.Handled = true;
|
||||
};
|
||||
|
@ -788,7 +788,7 @@ namespace SourceGit.Views {
|
|||
new Commands.Apply(ctx.RepositoryPath, tmpFile, true, "nowarn", "--cache --index --reverse").Exec();
|
||||
File.Delete(tmpFile);
|
||||
|
||||
repo.RefreshWorkingCopyChanges();
|
||||
repo.MarkWorkingCopyDirtyManually();
|
||||
repo.SetWatcherEnabled(true);
|
||||
e.Handled = true;
|
||||
};
|
||||
|
@ -814,7 +814,7 @@ namespace SourceGit.Views {
|
|||
new Commands.Apply(ctx.RepositoryPath, tmpFile, true, "nowarn", "--index --reverse").Exec();
|
||||
File.Delete(tmpFile);
|
||||
|
||||
repo.RefreshWorkingCopyChanges();
|
||||
repo.MarkWorkingCopyDirtyManually();
|
||||
repo.SetWatcherEnabled(true);
|
||||
e.Handled = true;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue