MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / commitAndPushLocked

Method commitAndPushLocked

internal/store/gitstore.go:801–882  ·  view source on GitHub ↗
(message string, relPaths ...string)

Source from the content-addressed store, hash-verified

799}
800
801func (s *GitTokenStore) commitAndPushLocked(message string, relPaths ...string) error {
802 repoDir := s.repoDirSnapshot()
803 if repoDir == "" {
804 return fmt.Errorf("git token store: repository path not configured")
805 }
806 repo, err := git.PlainOpen(repoDir)
807 if err != nil {
808 return fmt.Errorf("git token store: open repo: %w", err)
809 }
810 worktree, err := repo.Worktree()
811 if err != nil {
812 return fmt.Errorf("git token store: worktree: %w", err)
813 }
814 added := false
815 for _, rel := range relPaths {
816 if strings.TrimSpace(rel) == "" {
817 continue
818 }
819 if _, err = worktree.Add(rel); err != nil {
820 if errors.Is(err, os.ErrNotExist) {
821 if _, errRemove := worktree.Remove(rel); errRemove != nil && !errors.Is(errRemove, os.ErrNotExist) {
822 return fmt.Errorf("git token store: remove %s: %w", rel, errRemove)
823 }
824 } else {
825 return fmt.Errorf("git token store: add %s: %w", rel, err)
826 }
827 }
828 added = true
829 }
830 if !added {
831 return nil
832 }
833 status, err := worktree.Status()
834 if err != nil {
835 return fmt.Errorf("git token store: status: %w", err)
836 }
837 if status.IsClean() {
838 return nil
839 }
840 if strings.TrimSpace(message) == "" {
841 message = "Update auth store"
842 }
843 signature := &object.Signature{
844 Name: "CLIProxyAPI",
845 Email: "cliproxy@local",
846 When: time.Now(),
847 }
848 commitHash, err := worktree.Commit(message, &git.CommitOptions{
849 Author: signature,
850 })
851 if err != nil {
852 if errors.Is(err, git.ErrEmptyCommit) {
853 return nil
854 }
855 return fmt.Errorf("git token store: commit: %w", err)
856 }
857 headRef, errHead := repo.Head()
858 if errHead != nil {

Calls 8

repoDirSnapshotMethod · 0.95
gitAuthMethod · 0.95
maybeRunGCMethod · 0.95
RemoveMethod · 0.80
PushMethod · 0.80
NameMethod · 0.65
StringMethod · 0.45