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

Method ParseDiff

internal/git/patch.go:117–173  ·  view source on GitHub ↗
(path string, mode PatchMode, revision string)

Source from the content-addressed store, hash-verified

115}
116
117func (r *Repository) ParseDiff(path string, mode PatchMode, revision string) ([]Hunk, error) {
118 var diffCmd []string
119 diffCmd = append(diffCmd, mode.DiffCmd...)
120
121 if diffAlgo, err := r.GetConfig("diff.algorithm"); err == nil && diffAlgo != "" {
122 diffCmd = append([]string{diffCmd[0], "--diff-algorithm=" + diffAlgo}, diffCmd[1:]...)
123 }
124
125 if revision != "" {
126 reference := revision
127 if r.IsInitialCommit() && revision == "HEAD" {
128 emptyTree, err := r.GetEmptyTree()
129 if err != nil {
130 return nil, err
131 }
132 reference = emptyTree
133 }
134 diffCmd = append(diffCmd, reference)
135 }
136
137 diffCmd = append(diffCmd, "--no-color", "--", path)
138
139 diffLines, err := r.RunCommandLines(diffCmd...)
140 if err != nil {
141 return nil, err
142 }
143
144 var coloredLines []string
145 if r.GetColorBool("color.diff") {
146 colorCmd := append([]string{}, mode.DiffCmd...)
147
148 if diffAlgo, err := r.GetConfig("diff.algorithm"); err == nil && diffAlgo != "" {
149 colorCmd = append([]string{colorCmd[0], "--diff-algorithm=" + diffAlgo}, colorCmd[1:]...)
150 }
151
152 if revision != "" {
153 reference := revision
154 if r.IsInitialCommit() && revision == "HEAD" {
155 emptyTree, err := r.GetEmptyTree()
156 if err != nil {
157 return nil, err
158 }
159 reference = emptyTree
160 }
161 colorCmd = append(colorCmd, reference)
162 }
163
164 colorCmd = append(colorCmd, "--color=always", "--", path)
165 coloredLines, _ = r.RunCommandLines(colorCmd...)
166 }
167
168 if len(coloredLines) == 0 {
169 coloredLines = diffLines
170 }
171
172 return r.parseHunks(diffLines, coloredLines)
173}
174

Callers 2

patchUpdateFileMethod · 0.80
acceptAllHunksInFileMethod · 0.80

Calls 6

GetConfigMethod · 0.95
IsInitialCommitMethod · 0.95
GetEmptyTreeMethod · 0.95
RunCommandLinesMethod · 0.95
GetColorBoolMethod · 0.95
parseHunksMethod · 0.95

Tested by

no test coverage detected