MCPcopy Create free account
hub / github.com/cwarden/git-add--interactive / autoSplitAllHunks

Method autoSplitAllHunks

internal/ui/patch.go:635–676  ·  view source on GitHub ↗
(hunks []git.Hunk)

Source from the content-addressed store, hash-verified

633}
634
635func (a *App) autoSplitAllHunks(hunks []git.Hunk) []git.Hunk {
636 var result []git.Hunk
637
638 for _, hunk := range hunks {
639 if a.repo.HunkSplittable(&hunk) {
640 // Keep splitting until no more splits are possible
641 currentSplits := []git.Hunk{hunk}
642 totalSplitRounds := 0
643
644 for {
645 var newSplits []git.Hunk
646 splitOccurred := false
647
648 for _, splitHunk := range currentSplits {
649 if a.repo.HunkSplittable(&splitHunk) {
650 splits := a.repo.SplitHunk(&splitHunk)
651 if len(splits) > 1 {
652 splitOccurred = true
653 newSplits = append(newSplits, splits...)
654 } else {
655 newSplits = append(newSplits, splitHunk)
656 }
657 } else {
658 newSplits = append(newSplits, splitHunk)
659 }
660 }
661
662 currentSplits = newSplits
663 totalSplitRounds++
664 if !splitOccurred || totalSplitRounds > 10 { // Safety limit
665 break
666 }
667 }
668
669 result = append(result, currentSplits...)
670 } else {
671 result = append(result, hunk)
672 }
673 }
674
675 return result
676}
677
678func (a *App) hunkMatchesRegex(hunk *git.Hunk, regexStr string) bool {
679 regex, err := regexp.Compile(regexStr)

Callers 2

patchUpdateFileMethod · 0.95
acceptAllHunksInFileMethod · 0.95

Calls 2

HunkSplittableMethod · 0.80
SplitHunkMethod · 0.80

Tested by

no test coverage detected