Merge branch 'master' into lfsapi/slight-extraheaders-optimization
This commit is contained in:
commit
0bae5e05d7
@ -97,7 +97,7 @@ ArgsLoop:
|
|||||||
writeablePatterns = append(writeablePatterns, pattern)
|
writeablePatterns = append(writeablePatterns, pattern)
|
||||||
}
|
}
|
||||||
|
|
||||||
Print("Tracking %q", pattern)
|
Print("Tracking %q", unescapeTrackPattern(encodedArg))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now read the whole local attributes file and iterate over the contents,
|
// Now read the whole local attributes file and iterate over the contents,
|
||||||
@ -261,7 +261,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func escapeTrackPattern(unescaped string) string {
|
func escapeTrackPattern(unescaped string) string {
|
||||||
var escaped string = unescaped
|
var escaped string = strings.Replace(unescaped, `\`, "/", -1)
|
||||||
|
|
||||||
for from, to := range trackEscapePatterns {
|
for from, to := range trackEscapePatterns {
|
||||||
escaped = strings.Replace(escaped, from, to, -1)
|
escaped = strings.Replace(escaped, from, to, -1)
|
||||||
|
@ -81,6 +81,15 @@ func getAPIClient() *lfsapi.Client {
|
|||||||
return apiClient
|
return apiClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func closeAPIClient() error {
|
||||||
|
global.Lock()
|
||||||
|
defer global.Unlock()
|
||||||
|
if apiClient == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return apiClient.Close()
|
||||||
|
}
|
||||||
|
|
||||||
func newLockClient(remote string) *locking.Client {
|
func newLockClient(remote string) *locking.Client {
|
||||||
storageConfig := config.Config.StorageConfig()
|
storageConfig := config.Config.StorageConfig()
|
||||||
lockClient, err := locking.NewClient(remote, getAPIClient())
|
lockClient, err := locking.NewClient(remote, getAPIClient())
|
||||||
|
@ -66,7 +66,7 @@ func Run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
root.Execute()
|
root.Execute()
|
||||||
getAPIClient().Close()
|
closeAPIClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
func gitlfsCommand(cmd *cobra.Command, args []string) {
|
func gitlfsCommand(cmd *cobra.Command, args []string) {
|
||||||
|
@ -44,7 +44,7 @@ be scoped inside the configuration for a remote.
|
|||||||
|
|
||||||
Sets the maximum time, in seconds, that the HTTP client will wait for the
|
Sets the maximum time, in seconds, that the HTTP client will wait for the
|
||||||
next tcp read or write. If < 1, no activity timeout is used at all.
|
next tcp read or write. If < 1, no activity timeout is used at all.
|
||||||
Default: 10 seconds
|
Default: 30 seconds
|
||||||
|
|
||||||
* `lfs.keepalive`
|
* `lfs.keepalive`
|
||||||
|
|
||||||
|
6
glide.lock
generated
6
glide.lock
generated
@ -1,5 +1,5 @@
|
|||||||
hash: 7ac0f055e06001b80cc9cfc40de07c103b3b59abec0f3be0fca7cce49b71eec7
|
hash: e19b925b9eaca9a10a7742b4a4b1dc8047bff437584538dda59f4f10e69fa6ca
|
||||||
updated: 2017-09-19T15:38:52.833333079-06:00
|
updated: 2017-09-27T12:34:48.032089491-04:00
|
||||||
imports:
|
imports:
|
||||||
- name: github.com/bgentry/go-netrc
|
- name: github.com/bgentry/go-netrc
|
||||||
version: 9fd32a8b3d3d3f9d43c341bfe098430e07609480
|
version: 9fd32a8b3d3d3f9d43c341bfe098430e07609480
|
||||||
@ -14,7 +14,7 @@ imports:
|
|||||||
- name: github.com/pkg/errors
|
- name: github.com/pkg/errors
|
||||||
version: c605e284fe17294bda444b34710735b29d1a9d90
|
version: c605e284fe17294bda444b34710735b29d1a9d90
|
||||||
- name: github.com/rubyist/tracerx
|
- name: github.com/rubyist/tracerx
|
||||||
version: d7bcc0bc315bed2a841841bee5dbecc8d7d7582f
|
version: 787959303086f44a8c361240dfac53d3e9d53ed2
|
||||||
- name: github.com/spf13/cobra
|
- name: github.com/spf13/cobra
|
||||||
version: c55cdf33856a08e4822738728b41783292812889
|
version: c55cdf33856a08e4822738728b41783292812889
|
||||||
- name: github.com/spf13/pflag
|
- name: github.com/spf13/pflag
|
||||||
|
@ -11,7 +11,7 @@ import:
|
|||||||
- package: github.com/olekukonko/ts
|
- package: github.com/olekukonko/ts
|
||||||
version: ecf753e7c962639ab5a1fb46f7da627d4c0a04b8
|
version: ecf753e7c962639ab5a1fb46f7da627d4c0a04b8
|
||||||
- package: github.com/rubyist/tracerx
|
- package: github.com/rubyist/tracerx
|
||||||
version: d7bcc0bc315bed2a841841bee5dbecc8d7d7582f
|
version: 787959303086f44a8c361240dfac53d3e9d53ed2
|
||||||
- package: github.com/spf13/cobra
|
- package: github.com/spf13/cobra
|
||||||
version: c55cdf33856a08e4822738728b41783292812889
|
version: c55cdf33856a08e4822738728b41783292812889
|
||||||
- package: github.com/spf13/pflag
|
- package: github.com/spf13/pflag
|
||||||
|
@ -251,7 +251,7 @@ func (c *Client) httpClient(host string) *http.Client {
|
|||||||
MaxIdleConnsPerHost: concurrentTransfers,
|
MaxIdleConnsPerHost: concurrentTransfers,
|
||||||
}
|
}
|
||||||
|
|
||||||
activityTimeout := 10
|
activityTimeout := 30
|
||||||
if v, ok := c.uc.Get("lfs", fmt.Sprintf("https://%v", host), "activitytimeout"); ok {
|
if v, ok := c.uc.Get("lfs", fmt.Sprintf("https://%v", host), "activitytimeout"); ok {
|
||||||
if i, err := strconv.Atoi(v); err == nil {
|
if i, err := strconv.Atoi(v); err == nil {
|
||||||
activityTimeout = i
|
activityTimeout = i
|
||||||
|
@ -22,6 +22,8 @@ type credsConfig struct {
|
|||||||
// See: https://git-scm.com/docs/gitcredentials#_requesting_credentials
|
// See: https://git-scm.com/docs/gitcredentials#_requesting_credentials
|
||||||
// for more.
|
// for more.
|
||||||
AskPass string `os:"GIT_ASKPASS" git:"core.askpass" os:"SSH_ASKPASS"`
|
AskPass string `os:"GIT_ASKPASS" git:"core.askpass" os:"SSH_ASKPASS"`
|
||||||
|
// Helper is a string defining the credential helper that Git should use.
|
||||||
|
Helper string `git:"credential.helper"`
|
||||||
// Cached is a boolean determining whether or not to enable the
|
// Cached is a boolean determining whether or not to enable the
|
||||||
// credential cacher.
|
// credential cacher.
|
||||||
Cached bool `git:"lfs.cachecredentials"`
|
Cached bool `git:"lfs.cachecredentials"`
|
||||||
@ -42,7 +44,7 @@ func getCredentialHelper(cfg *config.Configuration) (CredentialHelper, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var hs []CredentialHelper
|
var hs []CredentialHelper
|
||||||
if len(ccfg.AskPass) > 0 {
|
if len(ccfg.Helper) == 0 && len(ccfg.AskPass) > 0 {
|
||||||
hs = append(hs, &AskPassCredentialHelper{
|
hs = append(hs, &AskPassCredentialHelper{
|
||||||
Program: ccfg.AskPass,
|
Program: ccfg.AskPass,
|
||||||
})
|
})
|
||||||
@ -118,7 +120,7 @@ func (h CredentialHelpers) Reject(what Creds) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Approve implements CredentialHelper.Approve and approves the given Creds
|
// Approve implements CredentialHelper.Approve and approves the given Creds
|
||||||
// "what" amongst all knonw CredentialHelpers. If any `CredentialHelper`s
|
// "what" amongst all known CredentialHelpers. If any `CredentialHelper`s
|
||||||
// returned a non-nil error, no further `CredentialHelper`s are notified, so as
|
// returned a non-nil error, no further `CredentialHelper`s are notified, so as
|
||||||
// to prevent inconsistent state.
|
// to prevent inconsistent state.
|
||||||
func (h CredentialHelpers) Approve(what Creds) error {
|
func (h CredentialHelpers) Approve(what Creds) error {
|
||||||
|
@ -64,9 +64,9 @@ func NewClient(osEnv Env, gitEnv Env) (*Client, error) {
|
|||||||
gitEnv = make(TestEnv)
|
gitEnv = make(TestEnv)
|
||||||
}
|
}
|
||||||
|
|
||||||
netrc, err := ParseNetrc(osEnv)
|
netrc, netrcfile, err := ParseNetrc(osEnv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, errors.Wrap(err, fmt.Sprintf("bad netrc file %s", netrcfile))
|
||||||
}
|
}
|
||||||
|
|
||||||
httpsProxy, httpProxy, noProxy := getProxyServers(osEnv, gitEnv)
|
httpsProxy, httpProxy, noProxy := getProxyServers(osEnv, gitEnv)
|
||||||
|
@ -11,18 +11,19 @@ type NetrcFinder interface {
|
|||||||
FindMachine(string) *netrc.Machine
|
FindMachine(string) *netrc.Machine
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseNetrc(osEnv Env) (NetrcFinder, error) {
|
func ParseNetrc(osEnv Env) (NetrcFinder, string, error) {
|
||||||
home, _ := osEnv.Get("HOME")
|
home, _ := osEnv.Get("HOME")
|
||||||
if len(home) == 0 {
|
if len(home) == 0 {
|
||||||
return &noFinder{}, nil
|
return &noFinder{}, "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
nrcfilename := filepath.Join(home, netrcBasename)
|
nrcfilename := filepath.Join(home, netrcBasename)
|
||||||
if _, err := os.Stat(nrcfilename); err != nil {
|
if _, err := os.Stat(nrcfilename); err != nil {
|
||||||
return &noFinder{}, nil
|
return &noFinder{}, nrcfilename, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return netrc.ParseFile(nrcfilename)
|
f, err := netrc.ParseFile(nrcfilename)
|
||||||
|
return f, nrcfilename, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type noFinder struct{}
|
type noFinder struct{}
|
||||||
|
@ -19,6 +19,7 @@ begin_test "askpass: push with GIT_ASKPASS"
|
|||||||
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
||||||
export LFS_ASKPASS_USERNAME="user"
|
export LFS_ASKPASS_USERNAME="user"
|
||||||
export LFS_ASKPASS_PASSWORD="pass"
|
export LFS_ASKPASS_PASSWORD="pass"
|
||||||
|
git config "credential.helper" ""
|
||||||
GIT_ASKPASS="lfs-askpass" SSH_ASKPASS="dont-call-me" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
GIT_ASKPASS="lfs-askpass" SSH_ASKPASS="dont-call-me" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
||||||
|
|
||||||
GITSERVER_USER="$(printf $GITSERVER | sed -e 's/http:\/\//http:\/\/user@/')"
|
GITSERVER_USER="$(printf $GITSERVER | sed -e 's/http:\/\//http:\/\/user@/')"
|
||||||
@ -53,6 +54,7 @@ begin_test "askpass: push with core.askPass"
|
|||||||
|
|
||||||
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
||||||
export LFS_ASKPASS_PASSWORD="pass"
|
export LFS_ASKPASS_PASSWORD="pass"
|
||||||
|
git config "credential.helper" ""
|
||||||
git config "core.askPass" "lfs-askpass"
|
git config "core.askPass" "lfs-askpass"
|
||||||
cat .git/config
|
cat .git/config
|
||||||
SSH_ASKPASS="dont-call-me" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
SSH_ASKPASS="dont-call-me" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
||||||
@ -90,6 +92,7 @@ begin_test "askpass: push with SSH_ASKPASS"
|
|||||||
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
# $password is defined from test/cmd/lfstest-gitserver.go (see: skipIfBadAuth)
|
||||||
export LFS_ASKPASS_USERNAME="user"
|
export LFS_ASKPASS_USERNAME="user"
|
||||||
export LFS_ASKPASS_PASSWORD="pass"
|
export LFS_ASKPASS_PASSWORD="pass"
|
||||||
|
git config "credential.helper" ""
|
||||||
SSH_ASKPASS="lfs-askpass" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
SSH_ASKPASS="lfs-askpass" GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin master 2>&1 | tee push.log
|
||||||
|
|
||||||
GITSERVER_USER="$(printf $GITSERVER | sed -e 's/http:\/\//http:\/\/user@/')"
|
GITSERVER_USER="$(printf $GITSERVER | sed -e 's/http:\/\//http:\/\/user@/')"
|
||||||
|
@ -93,7 +93,9 @@ begin_test "track directory"
|
|||||||
cd dir
|
cd dir
|
||||||
git init
|
git init
|
||||||
|
|
||||||
git lfs track "foo bar/*"
|
git lfs track "foo bar\\*" | tee track.txt
|
||||||
|
[ "foo[[:space:]]bar/* filter=lfs diff=lfs merge=lfs -text" = "$(cat .gitattributes)" ]
|
||||||
|
[ "Tracking \"foo bar/*\"" = "$(cat track.txt)" ]
|
||||||
|
|
||||||
mkdir "foo bar"
|
mkdir "foo bar"
|
||||||
echo "a" > "foo bar/a"
|
echo "a" > "foo bar/a"
|
||||||
@ -104,6 +106,7 @@ begin_test "track directory"
|
|||||||
assert_pointer "master" "foo bar/a" "87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7" 2
|
assert_pointer "master" "foo bar/a" "87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7" 2
|
||||||
assert_pointer "master" "foo bar/b" "0263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813f" 2
|
assert_pointer "master" "foo bar/b" "0263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813f" 2
|
||||||
)
|
)
|
||||||
|
end_test
|
||||||
|
|
||||||
begin_test "track without trailing linebreak"
|
begin_test "track without trailing linebreak"
|
||||||
(
|
(
|
||||||
|
4
vendor/github.com/rubyist/tracerx/tracerx.go
generated
vendored
4
vendor/github.com/rubyist/tracerx/tracerx.go
generated
vendored
@ -52,7 +52,7 @@ func Printf(format string, args ...interface{}) {
|
|||||||
func PrintfKey(key, format string, args ...interface{}) {
|
func PrintfKey(key, format string, args ...interface{}) {
|
||||||
tracer := getTracer(key)
|
tracer := getTracer(key)
|
||||||
if tracer.enabled {
|
if tracer.enabled {
|
||||||
fmt.Fprintf(tracer.w, Prefix+format+"\n", args...)
|
fmt.Fprintf(tracer.w, time.Now().Format("15:04:05.000000 ")+Prefix+format+"\n", args...)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ func PerformanceSinceKey(key, what string, t time.Time) {
|
|||||||
|
|
||||||
if tracer.performance {
|
if tracer.performance {
|
||||||
since := time.Since(t)
|
since := time.Since(t)
|
||||||
fmt.Fprintf(tracer.w, "performance %s: %.9f s\n", what, since.Seconds())
|
fmt.Fprintf(tracer.w, time.Now().Format("15:04:05.000000 ")+"performance %s: %.9f s\n", what, since.Seconds())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user