Exemplo n.º 1
0
func (self *repository) CreateTag(name, sha, message string, force bool) error {
	oid, err := git.NewOid(sha)
	if err != nil {
		self.state = states.FailedOperation
		return err
	}

	commit, err := self.repo.LookupCommit(oid)
	if err != nil {
		self.state = states.IncompleteOperation
		return err

	}

	signature, err := self.repo.DefaultSignature()
	if err != nil {
		self.state = states.FailedOperation
		return err

	}

	if message == "" {
		oid, err = self.repo.Tags.CreateLightweight(name, commit, force)
	} else {
		oid, err = self.repo.Tags.Create(name, commit, signature, message)
	}

	grip.Debugf("created tag '%s' of commit '%s' with hash '%s' in repo '%s'",
		name, commit, self.path)

	return err
}
Exemplo n.º 2
0
func (self *repository) Amend(message string) error {
	signature, tree, err := self.getCommitBasics()
	if err != nil {
		self.state = states.IncompleteOperation
		return err
	}

	ref, err := self.repo.Head()
	if err != nil {
		self.state = states.IncompleteOperation
		return err
	}

	commit, err := self.repo.LookupCommit(ref.Target())
	if err != nil {
		self.state = states.IncompleteOperation
		return err
	}

	newCommit, err := commit.Amend("HEAD", commit.Author(), signature, message, tree)
	if err == nil {
		self.state = states.IncompleteOperation
		return err
	} else {
		grip.Debugf("amended commit '%s' to '%s' with message '%s' in repo '%s'",
			commit, newCommit, message, self.path)
		return nil
	}
}
Exemplo n.º 3
0
func (self *repository) StageAllPath(path string) {
	index, err := self.repo.Index()
	if err != nil {
		return
	}

	callback := func(path, matchedPathSpec string) int {
		grip.Debugf("updating item %s (%s) in index.", path, matchedPathSpec)
		return 0
	}

	grip.CatchError(index.UpdateAll([]string{path}, callback))
}
Exemplo n.º 4
0
func (self *repository) Stage(fns ...string) error {
	index, err := self.repo.Index()
	if err != nil {
		return err
	}

	callback := func(path, matchedPathSpec string) int {
		grip.Debugf("adding file %s for %s to index", path, matchedPathSpec)
		return 0
	}

	return index.AddAll(fns, git.IndexAddCheckPathspec, callback)
}
Exemplo n.º 5
0
func (self *repository) Commit(message string) error {
	sig, tree, err := self.getCommitBasics()
	if err != nil {
		self.state = states.UnresolvedOperation
		return err
	}

	commit, err := self.repo.CreateCommit("HEAD", sig, sig, message, tree)
	if err == nil {
		self.state = states.FailedOperation
		return err
	} else {
		grip.Debugf("created commit '%s' with message '%s' in repo '%s'",
			commit, message, self.path)
		return nil
	}
}
Exemplo n.º 6
0
// WriteJSONResponse writes a JSON document to the body of an HTTP
// request, setting the return status of to 500 if the JSON
// seralization process encounters an error, otherwise return
func WriteJSONResponse(w http.ResponseWriter, code int, data interface{}) {
	j := &JSONMessage{data: data}

	out, err := j.MarshalPretty()

	if err != nil {
		grip.CatchDebug(err)
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	grip.Debug(j)

	w.Header().Set("Content-Type", "application/json; charset=utf-8")
	w.WriteHeader(code)
	size, err := w.Write(out)
	if err == nil {
		grip.Debugf("response object was %d", size)
	} else {
		grip.Warningf("encountered error %s writing a %d response", err.Error(), size)
	}
}
Exemplo n.º 7
0
func (self *RstBuilder) Write(fn string) error {
	lines, err := self.GetLines()
	if err != nil {
		return err
	}

	dirName := filepath.Dir(fn)
	err = os.MkdirAll(dirName, 0755)
	if err == nil {
		grip.Noticeln("created directory:", dirName)
	} else {
		grip.Warning(err.Error())
	}

	file, err := os.Create(fn)
	if err != nil {
		return err
	}
	defer file.Close()

	w := bufio.NewWriter(file)
	catcher := grip.NewCatcher()
	var numBytes int
	for _, line := range lines {
		nb, err := fmt.Fprintln(w, line)
		numBytes += nb
		catcher.Add(err)
	}

	catcher.Add(w.Flush())

	if catcher.HasErrors() == false {
		grip.Debugf("wrote %d bytes to file '%f'.", numBytes, fn)
	}

	return catcher.Resolve()
}