Giter Club home page Giter Club logo

Comments (2)

jeasintech avatar jeasintech commented on June 7, 2024

can set env before

	home := os.Getenv("HOME")
	logs.Debug(home)

	err = os.Setenv("HOME", "/root")
	if err != nil {
		logs.Debug(err.Error())
	}

from go-git.

jeasintech avatar jeasintech commented on June 7, 2024
    remoteUrl := "github url"

	Info("开始git处理")
	directory := "local repository directory path"

	Info("目录%s", directory)

	publicKeys, err := ssh.NewPublicKeysFromFile("git", "ssh key file path", "")
	CheckIfError(err)

	Info("检查HOME环境变量")
	home := os.Getenv("HOME")
	Info(home)
	if home == "" {
		Info("设置HOME环境变量")
		err = os.Setenv("HOME", "/root")
		CheckIfError(err)
	}

	// refs/heads/<localBranchName>
	branchName := "main"
	localBranchReferenceName := plumbing.NewBranchReferenceName(branchName)
	// refs/heads/origin/<remoteBranchName>
	remoteReferenceName := plumbing.NewRemoteReferenceName("origin", branchName)

	Info("打开git仓库")
	r, err := git.PlainOpen(directory)

	if err != nil {
		Info(err.Error())

		Info("git init")
		r, err = git.InitWithOptions(
			filesystem.NewStorage(osfs.New(strings.TrimRight(directory, "/")+"/.git"), cache.NewObjectLRUDefault()),
			osfs.New(directory), git.InitOptions{
				DefaultBranch: plumbing.Main,
			})

		CheckIfError(err)
		Info("Init Success")

// 		err = r.CreateBranch(&config.Branch{
// 			Name:   branchName,
// 			Remote: "origin",
// 			Merge:  localBranchReferenceName,
// 		})
// 		if err != nil {
// 			Info(err.Error())
// 		}

		_, err = r.CreateRemote(&config.RemoteConfig{
			Name: "origin",
			URLs: []string{remoteUrl},
		})
		if err != nil {
			Info(err.Error())
		}

	}

	ref := plumbing.NewSymbolicReference(localBranchReferenceName, remoteReferenceName)

	err = r.Storer.SetReference(ref)
	if err != nil {
		Info(err.Error())
	}

	w, err := r.Worktree()

	CheckIfError(err)

// 	err = w.Checkout(&git.CheckoutOptions{
// 		Branch: localBranchReferenceName,
// 		Create: true,
// 	})

// 	if err != nil {
// 		Info(err.Error())
// 	}

// 	filename := filepath.Join(directory, "example-git-file")
// 	err = os.WriteFile(filename, []byte("hello world"), 0644)
// 	CheckIfError(err)

	Info("git add操作")
	
	_, err = w.Add(".")
	CheckIfError(err)
	
	
	Info("删除newcms.zip")
	_, err = w.Remove("newcms.zip")
	if err != nil {
	    Info(err.Error())
	}


// 	status, err := w.Status()
// 	CheckIfError(err)

// 	fmt.Println(status)

	Info("git commit操作")
	_, err = w.Commit("测试", &git.CommitOptions{
		Author: &object.Signature{
			Name:  "your name here",
			Email: "your email here",
			When:  time.Now(),
		},
	})

	CheckIfError(err)

	// obj, err := r.CommitObject(commit)

	// if err != nil {
	// 	return err
	// }

	// fmt.Println(obj)

	Info("git push操作")
	err = r.Push(&git.PushOptions{
		Auth:       publicKeys,
		RemoteName: "origin",
		RemoteURL:  remoteUrl,
		Force:      true,
	})

	CheckIfError(err)

from go-git.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.