summaryrefslogtreecommitdiff
path: root/doPatch.findByPatchId.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-13 03:43:41 -0500
committerJeff Carr <[email protected]>2025-10-13 03:43:41 -0500
commit71138fb15b014200cc9c18e9c903700794947678 (patch)
treec74d022fb732b182b280976d8c718a0f7fde3d1a /doPatch.findByPatchId.go
parent5ada1a6aa264e8762f595878caf2059ab1d25386 (diff)
patch process getting betterv0.25.83
Diffstat (limited to 'doPatch.findByPatchId.go')
-rw-r--r--doPatch.findByPatchId.go117
1 files changed, 0 insertions, 117 deletions
diff --git a/doPatch.findByPatchId.go b/doPatch.findByPatchId.go
deleted file mode 100644
index 6882055..0000000
--- a/doPatch.findByPatchId.go
+++ /dev/null
@@ -1,117 +0,0 @@
-package main
-
-import (
- "bufio"
- "bytes"
- "errors"
- "fmt"
- "io"
- "os"
- "os/exec"
- "strings"
-)
-
-func searchAllCommits(targetPatchID string) (string, error) {
- revListArgs := []string{"--all"}
- cmdRevList := exec.Command("git", append([]string{"rev-list"}, revListArgs...)...)
-
- // We'll read the commit hashes from the command's standard output.
- revListStdout, err := cmdRevList.StdoutPipe()
- if err != nil {
- fmt.Fprintf(os.Stderr, "Error creating rev-list stdout pipe: %v\n", err)
- return "", err
- }
-
- // Start the command but don't wait for it to finish yet.
- if err := cmdRevList.Start(); err != nil {
- fmt.Fprintf(os.Stderr, "Error starting git rev-list: %v\n", err)
- return "", err
- }
-
- var commitHash string
- // 3. Process the stream of commit hashes line by line.
- scanner := bufio.NewScanner(revListStdout)
- found := false
- for scanner.Scan() {
- commitHash = scanner.Text()
-
- // 4. For each commit, calculate its patch ID.
- calculatedIDs, err := getPatchIDForCommit(commitHash)
- if err != nil {
- // Log the error but continue trying other commits.
- fmt.Fprintf(os.Stderr, "Warning: could not get patch-id for %s: %v\n", commitHash, err)
- continue
- }
-
- // 5. Compare the calculated IDs with our target.
- for _, id := range calculatedIDs {
- if id == targetPatchID {
- fmt.Printf("Found matching commit: %s\n", commitHash)
- found = true
- return commitHash, nil
- // We could exit here, but continuing will find all duplicates (e.g., from cherry-picks).
- }
- }
- }
-
- // Wait for the rev-list command to finish and check for errors.
- if err := cmdRevList.Wait(); err != nil {
- fmt.Fprintf(os.Stderr, "Error running git rev-list: %v\n", err)
- return "", err
- }
- if err := scanner.Err(); err != nil {
- fmt.Fprintf(os.Stderr, "Error reading commit hashes: %v\n", err)
- return "", err
- }
-
- if !found {
- fmt.Fprintf(os.Stderr, "No commit found with patch ID: %s\n", targetPatchID)
- return "not found", errors.New("patchId not found")
- }
- return commitHash, nil
-}
-
-// getPatchIDForCommit runs `git show <commit> | git patch-id --stable`
-// and returns the stable and unstable patch IDs.
-func getPatchIDForCommit(commitHash string) ([]string, error) {
- // Command to get the commit's diff
- cmdShow := exec.Command("git", "show", commitHash)
-
- // Command to calculate the patch-id from stdin
- cmdPatchID := exec.Command("git", "patch-id", "--stable")
-
- // Create a pipe to connect the output of cmdShow to the input of cmdPatchID.
- r, w := io.Pipe()
- cmdShow.Stdout = w
- cmdPatchID.Stdin = r
-
- var patchIDOutput bytes.Buffer
- cmdPatchID.Stdout = &patchIDOutput
-
- // Start both commands.
- if err := cmdShow.Start(); err != nil {
- return nil, fmt.Errorf("failed to start git-show: %w", err)
- }
- if err := cmdPatchID.Start(); err != nil {
- return nil, fmt.Errorf("failed to start git-patch-id: %w", err)
- }
-
- // Wait for 'show' to finish writing to the pipe, then close the writer.
- // This will signal EOF to the 'patch-id' command's stdin.
- errShow := cmdShow.Wait()
- w.Close()
- if errShow != nil {
- return nil, fmt.Errorf("git-show failed: %w", errShow)
- }
-
- // Now wait for 'patch-id' to finish reading and processing.
- errPatchID := cmdPatchID.Wait()
- if errPatchID != nil {
- return nil, fmt.Errorf("git-patch-id failed: %w", errPatchID)
- }
-
- // The output is typically "<stable_id> <unstable_id>".
- // We split the string by whitespace to get both.
- ids := strings.Fields(patchIDOutput.String())
- return ids, nil
-}