Upgrade vendor "git" (#175)
This commit is contained in:
parent
7596e41027
commit
871c964ef7
|
@ -0,0 +1,162 @@
|
||||||
|
# Contribution Guidelines
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
This document explains how to contribute changes to the Gitea
|
||||||
|
project. It assumes you have followed the [installation
|
||||||
|
instructions](https://github.com/go-gitea/docs/tree/master/en-US/installation)
|
||||||
|
|
||||||
|
Sensitive security-related issues should be reported to
|
||||||
|
[security@gitea.io](mailto:security@gitea.io).
|
||||||
|
|
||||||
|
## Bug reports
|
||||||
|
|
||||||
|
Please search the issues on the issue tracker with a variety of keywords
|
||||||
|
to ensure your bug is not already reported.
|
||||||
|
|
||||||
|
If unique, [open an issue](https://github.com/go-gitea/gitea/issues/new)
|
||||||
|
and answer the questions so we can understand and reproduce the
|
||||||
|
problematic behavior.
|
||||||
|
|
||||||
|
The burden is on you to convince us that it is actually a bug
|
||||||
|
in Gitea. This is easiest to do when you write clear, concise
|
||||||
|
instructions so we can reproduce the behavior (even if it seems
|
||||||
|
obvious). The more detailed and specific you are, the faster
|
||||||
|
we will be able to help you. Check out [How to Report Bugs
|
||||||
|
Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html).
|
||||||
|
|
||||||
|
Please be kind, remember that Gitea comes at no cost to you, and you're
|
||||||
|
getting free help.
|
||||||
|
|
||||||
|
## Discuss your design
|
||||||
|
|
||||||
|
The project welcomes submissions but please let everyone know what
|
||||||
|
you're working on if you want to change or add something to the Gitea
|
||||||
|
repositories.
|
||||||
|
|
||||||
|
Before starting to write something new for the Gitea project, please
|
||||||
|
[file an issue](https://github.com/go-gitea/gitea/issues/new).
|
||||||
|
Significant changes must go through the [change proposal
|
||||||
|
process](https://github.com/go-gitea/proposals) before they can be
|
||||||
|
accepted.
|
||||||
|
|
||||||
|
This process gives everyone a chance to validate the design, helps
|
||||||
|
prevent duplication of effort, and ensures that the idea fits inside
|
||||||
|
the goals for the project and tools. It also checks that the design is
|
||||||
|
sound before code is written; the code review tool is not the place for
|
||||||
|
high-level discussions.
|
||||||
|
|
||||||
|
## Testing redux
|
||||||
|
|
||||||
|
Before sending code out for review, run all the tests for the whole
|
||||||
|
tree to make sure the changes don't break other usage and keep the
|
||||||
|
compatibility on upgrade:
|
||||||
|
|
||||||
|
After running for a while, the command should print
|
||||||
|
|
||||||
|
```
|
||||||
|
ALL TESTS PASSED
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code review
|
||||||
|
|
||||||
|
Changes to Gitea must be reviewed before they are accepted, no matter
|
||||||
|
who makes the change even if an owners or a maintainer. We use github's
|
||||||
|
pull request workflow to do that and use [lgtm](http://lgtm.co) to ensure
|
||||||
|
every PR is reviewed by at least 2 maintainers.
|
||||||
|
|
||||||
|
## Sign your work
|
||||||
|
|
||||||
|
The sign-off is a simple line at the end of the explanation for the
|
||||||
|
patch. Your signature certifies that you wrote the patch or otherwise
|
||||||
|
have the right to pass it on as an open-source patch. The rules are
|
||||||
|
pretty simple: If you can certify [DCO](DCO), then you just add a line
|
||||||
|
to every git commit message:
|
||||||
|
|
||||||
|
```
|
||||||
|
Signed-off-by: Joe Smith <joe.smith@email.com>
|
||||||
|
```
|
||||||
|
|
||||||
|
Please use your real name, we really dislike pseudonyms or anonymous
|
||||||
|
contributions. We are in the opensource world without secrets. If you
|
||||||
|
set your `user.name` and `user.email` git configs, you can sign your
|
||||||
|
commit automatically with `git commit -s`.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
Everyone who sent a PR to Gitea that gets accepted will
|
||||||
|
be as a contributor. Please send a PR to add your name to
|
||||||
|
[CONTRIBUTORS](CONTRIBUTORS). For the format, see the
|
||||||
|
[CONTRIBUTORS](CONTRIBUTORS).
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
To make sure every PR have been checked, we make a team maintainers. Any
|
||||||
|
PR MUST be reviewed and by at least two maintainers before it can
|
||||||
|
get merged. Maintainers should be a contributor of gitea(or gogs) and
|
||||||
|
contributed at least 4 accepted PRs. And a contributor should apply as a
|
||||||
|
maintainer in [gitter Gitea develop](https://gitter.im/go-gitea/develop).
|
||||||
|
And the owners or the team maintainer could invite the contributor. A
|
||||||
|
maintainer should spend some time on code reviews. If some maintainer
|
||||||
|
have no time to do that, he should apply to leave maintainers team and
|
||||||
|
we will give him an honor to be as a member of advisor team. Of course,
|
||||||
|
if an advisor have time to code view, welcome it back to maintainers team.
|
||||||
|
If some one have no time to code view and forget to leave the maintainers,
|
||||||
|
the owners have the power to move him from maintainers team to advisors
|
||||||
|
team.
|
||||||
|
|
||||||
|
## Owners
|
||||||
|
|
||||||
|
Since Gitea is a pure community organization without any company
|
||||||
|
support, to keep the development healthly We will elect the owners every
|
||||||
|
year. Every time we will elect three owners. All the contributers could
|
||||||
|
vote for three owners, one is the main owner, the other two are assistant
|
||||||
|
owners. When the new owners have been elected, the old owners MUST move
|
||||||
|
the power to the new owners. If some owner don't obey these rules,
|
||||||
|
the other owners are allowed to revoke his owner status.
|
||||||
|
|
||||||
|
After the election, the new owners should say he agrees with these
|
||||||
|
rules on the [CONTRIBUTING](CONTRIBUTING.md) on the [Gitter Gitea
|
||||||
|
Channel](https://gitter.im/go-gitea/gitea). Below is the word to speak
|
||||||
|
|
||||||
|
```
|
||||||
|
I'm glad to be an owner of Gitea,
|
||||||
|
I agree with [CONTRIBUTING](CONTRIBUTING.md).
|
||||||
|
I will spend part of my time on gitea
|
||||||
|
and lead the development of gitea.
|
||||||
|
```
|
||||||
|
|
||||||
|
For a honor to the owners, this document will add the history owners
|
||||||
|
below:
|
||||||
|
|
||||||
|
2016-11-04 ~ 2017-12-31
|
||||||
|
|
||||||
|
- lunny <xiaolunwen@gmail.com>
|
||||||
|
- tboerger <thomas@webhippie.de>
|
||||||
|
- bkcsoft <kim.carlbacker@gmail.com>
|
||||||
|
|
||||||
|
## Versions
|
||||||
|
|
||||||
|
Gitea has one master as a tip branch and have many version branch
|
||||||
|
such as v0.9. v0.9 is a release branch and we will tag v0.9.0 both for
|
||||||
|
binary download. If v0.9.0 have some bugs, we will accept PR on v0.9
|
||||||
|
and publish v0.9.1 and merge bug PR to master.
|
||||||
|
|
||||||
|
Branch master is a tip version, so if you wish a production usage,
|
||||||
|
please download the latest release tag version. All the branch will be
|
||||||
|
protected via github, All the PRs to all the branches should be review
|
||||||
|
by two maintainers and pass the automatic tests.
|
||||||
|
|
||||||
|
## Copyright
|
||||||
|
|
||||||
|
Code that you contribute should use the standard copyright header:
|
||||||
|
|
||||||
|
```
|
||||||
|
// Copyright 2016 - 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
```
|
||||||
|
|
||||||
|
Files in the repository are copyright the year they are added and the
|
||||||
|
year they are last changed. If the copyright author is changed, just
|
||||||
|
copy the head below the old one.
|
|
@ -0,0 +1,9 @@
|
||||||
|
Andrey Nering <nobody@nobody.tld> (@andreynering)
|
||||||
|
Kim Carlbäcker <kim.carlbacker@gmail.com> (@bkcsoft)
|
||||||
|
LefsFlare <nobody@nobody.tld> (@LefsFlarey)
|
||||||
|
Lunny Xiao <xiaolunwen@gmail.com> (@lunny)
|
||||||
|
Rachid Zarouali <nobody@nobody.tld> (@xinity)
|
||||||
|
Rémy Boulanouar <admin@dblk.org> (@DblK)
|
||||||
|
Sandro Santilli <strk@kbt.io> (@strk)
|
||||||
|
Thibault Meyer <nobody@nobody.tld> (@0xbaadf00d)
|
||||||
|
Thomas Boerger <thomas@webhippie.de> (@tboerger)
|
|
@ -0,0 +1,36 @@
|
||||||
|
Developer Certificate of Origin
|
||||||
|
Version 1.1
|
||||||
|
|
||||||
|
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||||
|
660 York Street, Suite 102,
|
||||||
|
San Francisco, CA 94110 USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
Developer's Certificate of Origin 1.1
|
||||||
|
|
||||||
|
By making a contribution to this project, I certify that:
|
||||||
|
|
||||||
|
(a) The contribution was created in whole or in part by me and I
|
||||||
|
have the right to submit it under the open source license
|
||||||
|
indicated in the file; or
|
||||||
|
|
||||||
|
(b) The contribution is based upon previous work that, to the best
|
||||||
|
of my knowledge, is covered under an appropriate open source
|
||||||
|
license and I have the right under that license to submit that
|
||||||
|
work with modifications, whether created in whole or in part
|
||||||
|
by me, under the same open source license (unless I am
|
||||||
|
permitted to submit under a different license), as indicated
|
||||||
|
in the file; or
|
||||||
|
|
||||||
|
(c) The contribution was provided directly to me by some other
|
||||||
|
person who certified (a), (b) or (c) and I have not modified
|
||||||
|
it.
|
||||||
|
|
||||||
|
(d) I understand and agree that this project and the contribution
|
||||||
|
are public and that a record of the contribution (including all
|
||||||
|
personal information I submit with it, including my sign-off) is
|
||||||
|
maintained indefinitely and may be redistributed consistent with
|
||||||
|
this project or the open source license(s) involved.
|
|
@ -1,4 +1,5 @@
|
||||||
Copyright (c) 2015 All Gogs Contributors
|
Copyright (c) 2016 The Gitea Authors
|
||||||
|
Copyright (c) 2014 The Gogs Authors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -16,4 +17,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
Andrey Nering <nobody@nobody.tld> (@andreynering)
|
||||||
|
Kim Carlbäcker <kim.carlbacker@gmail.com> (@bkcsoft)
|
||||||
|
LefsFlare <nobody@nobody.tld> (@LefsFlarey)
|
||||||
|
Lunny Xiao <xiaolunwen@gmail.com> (@lunny)
|
||||||
|
Matthias Loibl <mail@matthiasloibl.com> (@metalmatze)
|
||||||
|
Rachid Zarouali <nobody@nobody.tld> (@xinity)
|
||||||
|
Rémy Boulanouar <admin@dblk.org> (@DblK)
|
||||||
|
Sandro Santilli <strk@kbt.io> (@strk)
|
||||||
|
Thibault Meyer <nobody@nobody.tld> (@0xbaadf00d)
|
||||||
|
Thomas Boerger <thomas@webhippie.de> (@tboerger)
|
|
@ -0,0 +1,40 @@
|
||||||
|
IMPORT := code.gitea.io/git
|
||||||
|
|
||||||
|
PACKAGES ?= $(shell go list ./... | grep -v /vendor/)
|
||||||
|
GENERATE ?= code.gitea.io/git
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: clean test build
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
go clean -i ./...
|
||||||
|
|
||||||
|
generate:
|
||||||
|
@which mockery > /dev/null; if [ $$? -ne 0 ]; then \
|
||||||
|
go get -u github.com/vektra/mockery/...; \
|
||||||
|
fi
|
||||||
|
go generate $(GENERATE)
|
||||||
|
|
||||||
|
.PHONY: fmt
|
||||||
|
fmt:
|
||||||
|
go fmt $(PACKAGES)
|
||||||
|
|
||||||
|
.PHONY: vet
|
||||||
|
vet:
|
||||||
|
go vet $(PACKAGES)
|
||||||
|
|
||||||
|
.PHONY: lint
|
||||||
|
lint:
|
||||||
|
@which golint > /dev/null; if [ $$? -ne 0 ]; then \
|
||||||
|
go get -u github.com/golang/lint/golint; \
|
||||||
|
fi
|
||||||
|
for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done;
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test:
|
||||||
|
for PKG in $(PACKAGES); do go test -cover -coverprofile $$GOPATH/src/$$PKG/coverage.out $$PKG || exit 1; done;
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build:
|
||||||
|
go build .
|
|
@ -1,13 +1,16 @@
|
||||||
# Git Shell [![Build # Status](https://travis-ci.org/go-gitea/git.svg?branch=master)](https://travis-ci.org/go-gitea/git)
|
# Git Shell
|
||||||
|
|
||||||
Package git is a Go module for Git access through shell commands.
|
[![Build Status](http://drone.gitea.io/api/badges/go-gitea/git/status.svg)](http://drone.gitea.io/go-gitea/git)
|
||||||
|
[![Join the chat at https://gitter.im/go-gitea/gitea](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/go-gitea/gitea?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
[![](https://images.microbadger.com/badges/image/gitea/gitea.svg)](http://microbadger.com/images/gitea/gitea "Get your own image badge on microbadger.com")
|
||||||
|
[![Coverage Status](https://coverage.gitea.io/badges/go-gitea/git/coverage.svg)](https://coverage.gitea.io/go-gitea/git)
|
||||||
|
[![Go Report Card](https://goreportcard.com/badge/code.gitea.io/git)](https://goreportcard.com/report/code.gitea.io/git)
|
||||||
|
[![GoDoc](https://godoc.org/code.gitea.io/git?status.svg)](https://godoc.org/code.gitea.io/git)
|
||||||
|
|
||||||
## Limitations
|
This project is a Go module to access Git through shell commands. For further
|
||||||
|
informations take a look at the current [documentation](https://godoc.org/code.gitea.io/git).
|
||||||
- Go version must be at least **1.3**.
|
|
||||||
- Git version must be no less than **1.7.1**, and great than or equal to **1.8.0** is recommended.
|
|
||||||
- For Windows users, try use as higher version as possible.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is under the MIT License. See the [LICENSE](LICENSE) file for the full license text.
|
This project is under the MIT License. See the [LICENSE](LICENSE) file for the
|
||||||
|
full license text.
|
||||||
|
|
|
@ -102,13 +102,13 @@ func ListHooks(repoPath string) (_ []*Hook, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
HOOK_PATH_UPDATE = "hooks/update"
|
HookPathUpdate = "hooks/update"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetUpdateHook writes given content to update hook of the reposiotry.
|
// SetUpdateHook writes given content to update hook of the reposiotry.
|
||||||
func SetUpdateHook(repoPath, content string) (err error) {
|
func SetUpdateHook(repoPath, content string) (err error) {
|
||||||
log("Setting update hook: %s", repoPath)
|
log("Setting update hook: %s", repoPath)
|
||||||
hookPath := path.Join(repoPath, HOOK_PATH_UPDATE)
|
hookPath := path.Join(repoPath, HookPathUpdate)
|
||||||
if com.IsExist(hookPath) {
|
if com.IsExist(hookPath) {
|
||||||
err = os.Remove(hookPath)
|
err = os.Remove(hookPath)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -110,7 +110,7 @@ func (repo *Repository) GetTags() ([]string, error) {
|
||||||
version.Sort(tags)
|
version.Sort(tags)
|
||||||
|
|
||||||
// Reverse order
|
// Reverse order
|
||||||
for i := 0; i < len(tags) / 2; i++ {
|
for i := 0; i < len(tags)/2; i++ {
|
||||||
j := len(tags) - i - 1
|
j := len(tags) - i - 1
|
||||||
tags[i], tags[j] = tags[j], tags[i]
|
tags[i], tags[j] = tags[j], tags[i]
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -114,19 +115,31 @@ type commitInfo struct {
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCommitsInfo takes advantages of concurrey to speed up getting information
|
// GetCommitsInfo takes advantages of concurrency to speed up getting information
|
||||||
// of all commits that are corresponding to these entries.
|
// of all commits that are corresponding to these entries. This method will automatically
|
||||||
// TODO: limit max goroutines number should be configurable
|
// choose the right number of goroutine (concurrency) to use related of the host CPU.
|
||||||
func (tes Entries) GetCommitsInfo(commit *Commit, treePath string) ([][]interface{}, error) {
|
func (tes Entries) GetCommitsInfo(commit *Commit, treePath string) ([][]interface{}, error) {
|
||||||
|
return tes.GetCommitsInfoWithCustomConcurrency(commit, treePath, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitsInfoWithCustomConcurrency takes advantages of concurrency to speed up getting information
|
||||||
|
// of all commits that are corresponding to these entries. If the given maxConcurrency is negative or
|
||||||
|
// equal to zero: the right number of goroutine (concurrency) to use will be choosen related of the
|
||||||
|
// host CPU.
|
||||||
|
func (tes Entries) GetCommitsInfoWithCustomConcurrency(commit *Commit, treePath string, maxConcurrency int) ([][]interface{}, error) {
|
||||||
if len(tes) == 0 {
|
if len(tes) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if maxConcurrency <= 0 {
|
||||||
|
maxConcurrency = runtime.NumCPU()
|
||||||
|
}
|
||||||
|
|
||||||
// Length of taskChan determines how many goroutines (subprocesses) can run at the same time.
|
// Length of taskChan determines how many goroutines (subprocesses) can run at the same time.
|
||||||
// The length of revChan should be same as taskChan so goroutines whoever finished job can
|
// The length of revChan should be same as taskChan so goroutines whoever finished job can
|
||||||
// exit as early as possible, only store data inside channel.
|
// exit as early as possible, only store data inside channel.
|
||||||
taskChan := make(chan bool, 10)
|
taskChan := make(chan bool, maxConcurrency)
|
||||||
revChan := make(chan commitInfo, 10)
|
revChan := make(chan commitInfo, maxConcurrency)
|
||||||
doneChan := make(chan error)
|
doneChan := make(chan error)
|
||||||
|
|
||||||
// Receive loop will exit when it collects same number of data pieces as tree entries.
|
// Receive loop will exit when it collects same number of data pieces as tree entries.
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
"ignore": "test",
|
"ignore": "test",
|
||||||
"package": [
|
"package": [
|
||||||
{
|
{
|
||||||
"checksumSHA1": "/JuXxX+Zg9lk3zvT9c82ltavFdk=",
|
"checksumSHA1": "X4WaxEtgFkM4VHg6TcNk2xkrqCI=",
|
||||||
"path": "code.gitea.io/git",
|
"path": "code.gitea.io/git",
|
||||||
"revision": "cddfff06fa8ed36571d43c1463ea63b3e6e8244b",
|
"revision": "0807b517283977be34f0ff5510b21e676fc1527c",
|
||||||
"revisionTime": "2016-11-12T10:50:26Z"
|
"revisionTime": "2016-11-13T14:20:52Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "/uhZZppDeb3Rbp3h8C0ALR3hdrA=",
|
"checksumSHA1": "/uhZZppDeb3Rbp3h8C0ALR3hdrA=",
|
||||||
|
|
Loading…
Reference in New Issue