本文整理汇总了Golang中github.com/openshift/origin/pkg/generate/git.Repository类的典型用法代码示例。如果您正苦于以下问题:Golang Repository类的具体用法?Golang Repository怎么用?Golang Repository使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Repository类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: gitRefInfo
// gitRefInfo extracts a buildapi.GitRefInfo from the specified repository or returns
// an error.
func gitRefInfo(repo git.Repository, dir, ref string) (buildapi.GitRefInfo, error) {
info := buildapi.GitRefInfo{}
if repo == nil {
return info, nil
}
out, err := repo.ShowFormat(dir, ref, "%an%n%ae%n%cn%n%ce%n%B")
if err != nil {
return info, err
}
lines := strings.SplitN(out, "\n", 5)
if len(lines) != 5 {
full := make([]string, 5)
copy(full, lines)
lines = full
}
info.Author.Name = lines[0]
info.Author.Email = lines[1]
info.Committer.Name = lines[2]
info.Committer.Email = lines[3]
info.Message = lines[4]
return info, nil
}
开发者ID:Tlacenka,项目名称:origin,代码行数:24,代码来源:startbuild.go
示例2: CloneAndCheckoutSources
// CloneAndCheckoutSources clones the remote repository using either regular
// git clone operation or shallow git clone, based on the "ref" provided (you
// cannot shallow clone using the 'ref').
// This function will return the full path to the buildable sources, including
// the context directory if specified.
func CloneAndCheckoutSources(repo git.Repository, remote, ref, localDir, contextDir string) (string, error) {
if len(ref) == 0 {
glog.V(5).Infof("No source ref specified, using shallow git clone")
if err := repo.CloneWithOptions(localDir, remote, git.Shallow, "--recursive"); err != nil {
return "", fmt.Errorf("shallow cloning repository %q to %q failed: %v", remote, localDir, err)
}
} else {
glog.V(5).Infof("Requested ref %q, performing full git clone and git checkout", ref)
if err := repo.Clone(localDir, remote); err != nil {
return "", fmt.Errorf("cloning repository %q to %q failed: %v", remote, localDir, err)
}
}
if len(ref) > 0 {
if err := repo.Checkout(localDir, ref); err != nil {
return "", fmt.Errorf("unable to checkout ref %q in %q repository: %v", ref, remote, err)
}
}
if len(contextDir) > 0 {
glog.V(5).Infof("Using context directory %q. The full source path is %q", contextDir, filepath.Join(localDir, contextDir))
}
return filepath.Join(localDir, contextDir), nil
}
开发者ID:php-coder,项目名称:origin,代码行数:27,代码来源:sourcelookup.go
示例3: streamPathToBuild
func streamPathToBuild(repo git.Repository, in io.Reader, out io.Writer, client osclient.BuildConfigInterface, fromDir, fromFile, fromRepo string, options *buildapi.BinaryBuildRequestOptions) (*buildapi.Build, error) {
count := 0
asDir, asFile, asRepo := len(fromDir) > 0, len(fromFile) > 0, len(fromRepo) > 0
if asDir {
count++
}
if asFile {
count++
}
if asRepo {
count++
}
if count > 1 {
return nil, fmt.Errorf("only one of --from-file, --from-repo, or --from-dir may be specified")
}
if asRepo && !git.IsGitInstalled() {
return nil, fmt.Errorf("cannot find git. Git is required to start a build from a repository. If git is not available, use --from-dir instead.")
}
var r io.Reader
switch {
case fromFile == "-":
return nil, fmt.Errorf("--from-file=- is not supported")
case fromDir == "-":
br := bufio.NewReaderSize(in, 4096)
r = br
if !isArchive(br) {
fmt.Fprintf(out, "WARNING: the provided file may not be an archive (tar, tar.gz, or zip), use --from-file=- instead\n")
}
fmt.Fprintf(out, "Uploading archive file from STDIN as binary input for the build ...\n")
default:
var fromPath string
switch {
case asDir:
fromPath = fromDir
case asFile:
fromPath = fromFile
case asRepo:
fromPath = fromRepo
}
clean := filepath.Clean(fromPath)
path, err := filepath.Abs(fromPath)
if err != nil {
return nil, err
}
stat, err := os.Stat(path)
if err != nil {
return nil, err
}
if stat.IsDir() {
commit := "HEAD"
if len(options.Commit) > 0 {
commit = options.Commit
}
info, gitErr := gitRefInfo(repo, clean, commit)
if gitErr == nil {
options.Commit = info.GitSourceRevision.Commit
options.Message = info.GitSourceRevision.Message
options.AuthorName = info.GitSourceRevision.Author.Name
options.AuthorEmail = info.GitSourceRevision.Author.Email
options.CommitterName = info.GitSourceRevision.Committer.Name
options.CommitterEmail = info.GitSourceRevision.Committer.Email
} else {
glog.V(6).Infof("Unable to read Git info from %q: %v", clean, gitErr)
}
if asRepo {
fmt.Fprintf(out, "Uploading %q at commit %q as binary input for the build ...\n", clean, commit)
if gitErr != nil {
return nil, fmt.Errorf("the directory %q is not a valid Git repository: %v", clean, gitErr)
}
pr, pw := io.Pipe()
go func() {
if err := repo.Archive(clean, options.Commit, "tar.gz", pw); err != nil {
pw.CloseWithError(fmt.Errorf("unable to create Git archive of %q for build: %v", clean, err))
} else {
pw.CloseWithError(io.EOF)
}
}()
r = pr
} else {
fmt.Fprintf(out, "Uploading directory %q as binary input for the build ...\n", clean)
pr, pw := io.Pipe()
go func() {
w := gzip.NewWriter(pw)
if err := tar.New().CreateTarStream(path, false, w); err != nil {
pw.CloseWithError(err)
} else {
w.Close()
pw.CloseWithError(io.EOF)
}
}()
r = pr
//.........这里部分代码省略.........
开发者ID:pweil-,项目名称:origin,代码行数:101,代码来源:startbuild.go
示例4: streamPathToBuild
func streamPathToBuild(repo git.Repository, in io.Reader, out io.Writer, client osclient.BuildConfigInterface, fromDir, fromFile, fromRepo string, options *buildapi.BinaryBuildRequestOptions) (*buildapi.Build, error) {
count := 0
asDir, asFile, asRepo := len(fromDir) > 0, len(fromFile) > 0, len(fromRepo) > 0
if asDir {
count++
}
if asFile {
count++
}
if asRepo {
count++
}
if count > 1 {
return nil, fmt.Errorf("only one of --from-file, --from-repo, or --from-dir may be specified")
}
if asRepo && !git.IsGitInstalled() {
return nil, fmt.Errorf("cannot find git. Git is required to start a build from a repository. If git is not available, use --from-dir instead.")
}
var r io.Reader
switch {
case fromFile == "-":
return nil, fmt.Errorf("--from-file=- is not supported")
case fromDir == "-":
br := bufio.NewReaderSize(in, 4096)
r = br
if !isArchive(br) {
fmt.Fprintf(out, "WARNING: the provided file may not be an archive (tar, tar.gz, or zip), use --from-file=- instead\n")
}
fmt.Fprintf(out, "Uploading archive file from STDIN as binary input for the build ...\n")
default:
var fromPath string
switch {
case asDir:
fromPath = fromDir
case asFile:
fromPath = fromFile
case asRepo:
fromPath = fromRepo
}
clean := filepath.Clean(fromPath)
path, err := filepath.Abs(fromPath)
if err != nil {
return nil, err
}
stat, err := os.Stat(path)
if err != nil {
return nil, err
}
if stat.IsDir() {
commit := "HEAD"
if len(options.Commit) > 0 {
commit = options.Commit
}
info, gitErr := gitRefInfo(repo, path, commit)
if gitErr == nil {
options.Commit = info.GitSourceRevision.Commit
options.Message = info.GitSourceRevision.Message
options.AuthorName = info.GitSourceRevision.Author.Name
options.AuthorEmail = info.GitSourceRevision.Author.Email
options.CommitterName = info.GitSourceRevision.Committer.Name
options.CommitterEmail = info.GitSourceRevision.Committer.Email
} else {
glog.V(6).Infof("Unable to read Git info from %q: %v", clean, gitErr)
}
// NOTE: It's important that this stays false unless we change the
// path to something else, otherwise we will delete whatever path the
// user provided.
var usedTempDir bool = false
var tempDirectory string = ""
if asRepo {
var contextDir string = ""
fmt.Fprintf(out, "Uploading %q at commit %q as binary input for the build ...\n", clean, commit)
if gitErr != nil {
return nil, fmt.Errorf("the directory %q is not a valid Git repository: %v", clean, gitErr)
}
// If the user doesn't give us the root directory of the Git repo,
// we still want the command to work. However, as this may be
// unintended, we warn them.
if gitRootDir, err := repo.GetRootDir(path); filepath.Clean(gitRootDir) != filepath.Clean(path) && err == nil {
fmt.Fprintf(out, "WARNING: Using root dir %s for Git repository\n", gitRootDir)
contextDir, _ = filepath.Rel(gitRootDir, path)
path = gitRootDir
}
// Create a temp directory to move the repo contents to
tempDirectory, err := ioutil.TempDir(os.TempDir(), "oc_cloning_"+options.Commit)
if err != nil {
return nil, err
//.........这里部分代码省略.........
开发者ID:juanluisvaladas,项目名称:origin,代码行数:101,代码来源:startbuild.go
注:本文中的github.com/openshift/origin/pkg/generate/git.Repository类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论