code.gitea.io/gitea@v1.19.3/modules/git/pipeline/namerev.go (about)

     1  // Copyright 2019 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package pipeline
     5  
     6  import (
     7  	"bytes"
     8  	"context"
     9  	"fmt"
    10  	"io"
    11  	"strings"
    12  	"sync"
    13  
    14  	"code.gitea.io/gitea/modules/git"
    15  )
    16  
    17  // NameRevStdin runs name-rev --stdin
    18  func NameRevStdin(ctx context.Context, shasToNameReader *io.PipeReader, nameRevStdinWriter *io.PipeWriter, wg *sync.WaitGroup, tmpBasePath string) {
    19  	defer wg.Done()
    20  	defer shasToNameReader.Close()
    21  	defer nameRevStdinWriter.Close()
    22  
    23  	stderr := new(bytes.Buffer)
    24  	var errbuf strings.Builder
    25  	if err := git.NewCommand(ctx, "name-rev", "--stdin", "--name-only", "--always").Run(&git.RunOpts{
    26  		Dir:    tmpBasePath,
    27  		Stdout: nameRevStdinWriter,
    28  		Stdin:  shasToNameReader,
    29  		Stderr: stderr,
    30  	}); err != nil {
    31  		_ = shasToNameReader.CloseWithError(fmt.Errorf("git name-rev [%s]: %w - %s", tmpBasePath, err, errbuf.String()))
    32  	}
    33  }