| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
One use of go-git is to transfer git data from a non-standard git repo
(not stored in a file system, for example) to a "remote" backed by a
standard, local .git repo.
In this scenario, delta compression is not needed to reduce transfer
time over the "network", because there is no network. The underlying
storage layer has already taken care of the data tranfer, and sending
the objects to local .git storage doesn't require compression. So this
PR gives the user the option to turn off compression when it isn't
needed.
Of course, this results in a larger, uncompressed local .git repo, but
the user can then run git gc or git repack on that repo if they care
about the storage costs.
Turning the pack window to 0 on reduces total push time of a 36K repo
by 50 seconds (out of a pre-PR total of 3m26s).
|
| |
|
|
|
|
|
|
| |
When git-core isn't in the user's PATH, we need to use `LookPath` to
verify the existence of the executable, rather than `os.Stat`, so that
on Windows it will search for files with executable suffixes.
|
|\
| |
| | |
*: windows support, skipped receive_pack_test for git transport
|
| | |
|
|/
|
|
|
| |
user.Current() causes 'Current not implemented' error when
crosscompiled. See https://github.com/golang/go/issues/6376
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* fixed windows failed test: "143 FAIL: worktree_test.go:314: WorktreeSuite.TestFilenameNormalization"
* fixed windows failed test: "489: FAIL: auth_method_test.go:106: SuiteCommon.TestNewSSHAgentAuthNoAgent"
* fixed windows failed test: "279 FAIL: server_test.go:50: ServerSuite.TestClone"
fixed windows failed test: "298 FAIL: server_test.go:37: ServerSuite.TestPush"
* fixed windows failed test: "316 FAIL: <autogenerated>:26: UploadPackSuite.TearDownSuite"
* fixed windows failed test: "FAIL: <autogenerated>:6: IndexSuite.TearDownSuite"
|
|\
| |
| | |
plumbing: fix pack commands for the file client on Windows
|
| |
| |
| |
| |
| |
| | |
The default git install on Windows doesn't come with commands for
receive-pack and upload-pack in the default $PATH. Instead, use
--exec-path to find pack executables in that case.
|
|/
|
|
|
|
|
|
|
|
| |
* fixed windows failed test: "134 FAIL: repository_test.go:340: RepositorySuite.TestPlainOpenBareRelativeGitDirFileTrailingGarbage"
* fixed windows failed test: "143 FAIL: worktree_test.go:367: WorktreeSuite.TestCheckoutIndexOS"
* fixed windows failed test: "296 FAIL: receive_pack_test.go:36: ReceivePackSuite.TearDownTest"
* fixed windows failed test: "152 FAIL: worktree_test.go:278: WorktreeSuite.TestCheckoutSymlink"
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
transport/server: add asClient parameter
|
| |
| |
| |
| |
| |
| | |
server.NewClient returns a server that acts as a client.
This makes it working seamlessly when registering a server directly with
`client.InstallProtocol`.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* server: implement delete-refs and announce it.
* remote: check if server announced delete-refs before trying
to delete and fail fast if it does not.
Note that the client does not need no send 'delete-refs' back
to the server to be able to delete references:
```
delete-refs
-----------
If the server sends back the 'delete-refs' capability, it means that
it is capable of accepting a zero-id value as the target
value of a reference update. It is not sent back by the client, it
simply informs the client that it can be sent zero-id values
to delete references.
```
So our server implementation does not check if the client sent
delete-refs back, it just accepts deletes if it receives them.
|
|
|
|
|
|
| |
Pipe returned by Command.StderrPipe() has a race with Read and
Command.Wait(). We use a io.Pipe() instead and ensure it is closed
after Wait().
|
|
|
|
|
|
|
| |
We only use the first line of error output. So we use a channel with
a single byte buffer and read the first line from stderr. Further
output is discarded, as well as any further I/O error, which might
be expected when closing the pipe (command finished).
|
|\
| |
| | |
transport/ssh: allow passing SSH options
|
| |
| |
| |
| |
| | |
A global *ssh.ClientConfig override can be set. It will be
use to override values of each SSH session.
|
| |
| |
| |
| |
| | |
Adds the possibility of passing options to SSH transport.
Options have the form of functions modifying ssh.ClientConfig.
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
"ERR access denied or repository not exported:"
is now detected as transport.ErrRepositoryNotFound, since
that's what git-daemon returns when --informative-errors is
not used.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
* at low level, ReceivePack must close its stream to the
server to signal it has finished.
* remote.go: Close() must be called on session.
|
| |
|
|
|
|
| |
Two endpoints are not equals between them, even if they were generated using the same url or path.
|
|
|
|
|
|
|
| |
* Do not convert local paths to URLs, just keep them as they
are.
* This way we add support for Windows without taking care of
Windows path-to-URL conversion.
|
|
|
|
|
| |
* add internal *url.URL implementation for regular URLs.
* add internal implementation for SCP-like URLs.
|
| |
|
|\
| |
| | |
transport: ssh, new DefaultAuthBuilder variable
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
To be able to fix #261 we will move again to gopkg.in before v4 stable release.
|
|\
| |
| | |
Remove TODOs from documentation
|