feature: add fixup head into parent (#1969)

* feature: add fixup head into parent

* fix: do not add original full message in fixup
This commit is contained in:
cdammanintopix
2025-12-11 12:21:53 +01:00
committed by GitHub
parent a999d09c76
commit e130d35d33
13 changed files with 42 additions and 3 deletions

View File

@@ -160,6 +160,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Umformulieren</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Als Patch speichern...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash in den Vorgänger</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Fixup in den Vorgänger</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">ÄNDERUNGEN</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">geänderte Datei(en)</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Änderungen durchsuchen...</x:String>

View File

@@ -156,6 +156,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Reword</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Save as Patch...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash into Parent</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Fixup into Parent</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">CHANGES</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">changed file(s)</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Search Changes...</x:String>

View File

@@ -159,7 +159,8 @@
<x:String x:Key="Text.CommitCM.Revert" xml:space="preserve">Revertir Commit</x:String>
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Reescribir</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Guardar como Parche...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash en Parent</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash en el Padre</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Arreglar en el Padre</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">CAMBIOS</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">archivo(s) modificado(s)</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Buscar Cambios...</x:String>

View File

@@ -158,7 +158,8 @@
<x:String x:Key="Text.CommitCM.Revert" xml:space="preserve">Annuler le commit</x:String>
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Reformuler</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Enregistrer en tant que patch...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash dans le parent</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash dans le Parent</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Fixup dans le Parent</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">CHANGEMENTS</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">fichier(s) modifié(s)</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Rechercher les changements...</x:String>

View File

@@ -154,6 +154,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Reword</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Simpan sebagai Patch...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash ke Parent</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Fixup ke Parent</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">PERUBAHAN</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">berkas berubah</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Cari Perubahan...</x:String>

View File

@@ -148,6 +148,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Modifica</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Salva come Patch...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Compatta nel Genitore</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Correggi nel Genitore</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">MODIFICHE</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">file modificati</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Cerca Modifiche...</x:String>

View File

@@ -152,6 +152,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">메시지 수정</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">패치로 저장...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">부모에 합치기</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">부모에 합치기(Fixup)</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">변경 사항</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">변경된 파일</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">변경 사항 검색...</x:String>

View File

@@ -160,6 +160,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Изменить комментарий</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Сохранить как заплатки...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Объединить с предыдущей ревизией</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">Исправить в родительском</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">ИЗМЕНЕНИЯ</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">изменённый(х) файл(ов)</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Найти изменения....</x:String>

View File

@@ -160,6 +160,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">编辑提交信息</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">另存为补丁 ...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">合并此提交到上一个提交</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">修复至父提交</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">变更对比</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">个文件发生变更</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">查找变更...</x:String>

View File

@@ -160,6 +160,7 @@
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">編輯提交訊息</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">另存為修補檔 (patch)...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">合併此提交到上一個提交</x:String>
<x:String x:Key="Text.CommitCM.Fixup" xml:space="preserve">修正至父提交</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">變更對比</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Count" xml:space="preserve">個檔案已變更</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">搜尋變更...</x:String>

View File

@@ -341,6 +341,21 @@ namespace SourceGit.ViewModels
}
}
public async Task FixupHeadAsync(Models.Commit head)
{
if (head.Parents.Count == 1)
{
var parent = await new Commands.QuerySingleCommit(_repo.FullPath, head.Parents[0]).GetResultAsync();
if (parent == null)
return;
var parentMessage = await new Commands.QueryCommitFullMessage(_repo.FullPath, head.Parents[0]).GetResultAsync();
if (_repo.CanCreatePopup())
await _repo.ShowAndStartPopupAsync(new Squash(_repo, parent, parentMessage));
}
}
public async Task DropHeadAsync(Models.Commit head)
{
var parent = _commits.Find(x => x.SHA.Equals(head.Parents[0]));

View File

@@ -371,7 +371,10 @@ namespace SourceGit.ViewModels
item.FullMessage = item.OriginalFullMessage;
item.IsMessageUserEdited = false;
pendingMessages.Add(item.OriginalFullMessage);
if (item.Action == Models.InteractiveRebaseAction.Squash)
{
pendingMessages.Add(item.OriginalFullMessage);
}
hasPending = true;
continue;
}

View File

@@ -563,6 +563,17 @@ namespace SourceGit.Views
e.Handled = true;
};
menu.Items.Add(squash);
var fixup = new MenuItem();
fixup.Header = App.Text("CommitCM.Fixup");
fixup.Icon = App.CreateMenuIcon("Icons.Fix");
fixup.IsEnabled = commit.Parents.Count == 1;
fixup.Click += async (_, e) =>
{
await vm.FixupHeadAsync(commit);
e.Handled = true;
};
menu.Items.Add(fixup);
}
else
{