代码拉取完成,页面将自动刷新
同步操作将从 开源中国/git-repo-clean 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package main
import (
"bufio"
"io"
"os"
"os/exec"
)
// fast-export output stream iterater
type FEOutPutIter struct {
cmd *exec.Cmd
out io.ReadCloser
f *bufio.Reader
errChan <-chan error
}
func (repo *Repository) NewFastExportIter() (*FEOutPutIter, error) {
args := []string{
"-c",
"core.quotepath=false",
"fast-export",
"--show-original-ids",
"--signed-tags=strip",
"--fake-missing-tagger",
"--tag-of-filtered-object=rewrite",
"--use-done-feature",
"--mark-tags", // git >= 2.24.0
"--reencode=yes", // git >= 2.23.0
repo.context.opts.branch,
"--no-data",
}
// drop "--no-data"
if repo.context.opts.lfs {
args = args[:len(args)-1]
}
cmd := repo.GitCommand(args...)
out, err := cmd.StdoutPipe()
if err != nil {
out.Close()
return nil, err
}
cmd.Stderr = os.Stderr
err = cmd.Start()
if err != nil {
return nil, err
}
return &FEOutPutIter{
cmd: cmd,
out: out,
f: bufio.NewReader(out),
errChan: make(chan error, 1),
}, nil
}
// get data line by line from output stream
func (iter *FEOutPutIter) Next() (string, error) {
errChan := make(chan error, 1)
line, err := iter.f.ReadString('\n')
if err != nil {
if err != io.EOF {
errChan <- err
return "", err
}
return "", nil
}
return line, nil
}
func (iter *FEOutPutIter) Close() error {
err := iter.out.Close()
err2 := iter.cmd.Wait()
if err == nil {
err = err2
}
return err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。