aboutsummaryrefslogtreecommitdiffstats
path: root/remote.go
Commit message (Collapse)AuthorAgeFilesLines
* *: add pointer to the new transport.Endpoint structMáximo Cuadros2017-11-211-1/+1
| | | | Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
* Merge pull request #641 from sunfishgao/patch-1Ori Rawlings2017-11-131-0/+1
|\ | | | | fix: a range loop can break in advance
| * fix: a range loop can break in advanceSunfish2017-11-131-0/+1
| |
* | remote: add the last 100 commits for each ref in haves listJeremy Stribling2017-10-051-3/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | If the local ref is not an ancestor of the remote ref being fetched, then when we send an UploadPack request with that local ref as one of the Haves, the remote will not recognize it, and will think we are asking for the entire history of the repo, even if there's a common ancestor. To do this right, we need to support the multi-ack protocol so we can negotiate a common commit. That's hard though; this is a quick fix just to include the previous 100 commits for each local ref in the Haves list, and hope that one of them is the common commit.
* | Merge pull request #609 from darkowlzz/ls-remoteMáximo Cuadros2017-10-041-0/+33
|\ \ | | | | | | remote: add support for ls-remote
| * | Create ListOptions and rename LSRemote to List.Sunny2017-10-041-3/+3
| | |
| * | remote: add support for ls-remoteSunny2017-10-021-0/+33
| |/
* | Merge pull request #586 from keybase/strib/commit-preorder-seen-gh-masterMáximo Cuadros2017-09-121-1/+1
|\ \ | | | | | | plumbing: the commit walker can skip externally-seen commits
| * | plumbing: the commit walker can skip externally-seen commitsJeremy Stribling2017-09-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the revlist is computing the set of hashes needed to transfer, it doesn't need to walk over commits it has already processed. So, it can instruct the commit walker not to walk those commits by passing in its own `seen` map. For a 36K object repo, this brought the time for `revlist.Objects` down from 50s to 30s.
* | | config: support a configurable, and turn-off-able, pack.windowJeremy Stribling2017-09-111-3/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* / remote: iterate over reference only onceMiguel Molina2017-09-051-27/+58
|/ | | | Signed-off-by: Miguel Molina <miguel@erizocosmi.co>
* Remote.Fetch Tags logic improvement and fix NoTagsMáximo Cuadros2017-09-041-6/+16
|
* Add sideband support for pushOri Rawlings2017-09-011-4/+21
|
* remote: avoid expensive revlist operation when only deleting refsJeremy Stribling2017-08-281-3/+12
|
* Merge pull request #531 from mcuadros/ref-nameMáximo Cuadros2017-08-021-2/+2
|\ | | | | plumbing: moved `Reference.Is*` methods to `ReferenceName.Is*`
| * *: use the new API for ReferenceName.Is* methodsMáximo Cuadros2017-08-021-2/+2
| |
* | config: multiple values in RemoteConfig (URLs and Fetch)Santiago M. Mola2017-08-011-4/+7
|/ | | | | | | | * Change `URL string` to `URL []string` in `RemoteConfig`, since git allows multiple URLs per remote. See: http://marc.info/?l=git&m=116231242118202&w=2 * Fix marshalling of multiple fetch refspecs.
* *: package context support in Repository, Remote and SubmoduleMáximo Cuadros2017-07-261-12/+43
|
* Merge pull request #507 from mcuadros/ctxMáximo Cuadros2017-07-251-2/+3
|\ | | | | transport: context package support allowing cancellation of any network operation
| * *: context.TODO()Máximo Cuadros2017-07-251-2/+3
| |
* | remote: push, update remote refs on pushMáximo Cuadros2017-07-221-15/+42
|/
* repository: allow push from shallow repositoriesMáximo Cuadros2017-07-191-1/+11
|
* Merge pull request #485 from mcuadros/fetch-tagsv4.0.0-rc12Máximo Cuadros2017-07-171-56/+83
|\ | | | | remote: fetch, correct behavior on tags
| * remote: fetch, correct behaviour on tagsMáximo Cuadros2017-07-171-56/+83
| |
* | remote: avoid duplicate havesMáximo Cuadros2017-07-131-3/+13
|/
* improve delete support on pushSantiago M. Mola2017-07-111-4/+18
| | | | | | | | | | | | | | | | | | | | | | | * 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.
* remote: fix push delete, closes #466Santiago M. Mola2017-07-071-12/+48
| | | | | Refspecs for deletes were not being used to produce delete commands on the update request.
* Update local remote references during fetch even if no pack needs to be receivedOri Rawlings2017-06-191-25/+45
|
* Merge pull request #421 from smola/iter-namingMáximo Cuadros2017-06-141-1/+1
|\ | | | | fix naming of NewCommit{Pre,Post}Iterator
| * fix naming of NewCommit{Pre,Post}IteratorSantiago M. Mola2017-06-131-1/+1
| | | | | | | | | | Use Iter suffix, just as all other iterators in the project. Use Preorder and Postorder to be more clear.
* | ensure receive-pack session is closed on push.Santiago M. Mola2017-06-131-0/+2
|/ | | | | | * at low level, ReceivePack must close its stream to the server to signal it has finished. * remote.go: Close() must be called on session.
* Merge pull request #367 from smola/push-tagsMáximo Cuadros2017-04-271-1/+0
|\ | | | | add test for tags push, closes #354
| * add test for tags push, closes #354Santiago M. Mola2017-04-271-1/+0
| |
* | Merge pull request #365 from smola/git-rel-pathSantiago M. Mola2017-04-271-2/+2
|\ \ | |/ |/| transport: make Endpoint an interface, fixes #362
| * transport: make Endpoint an interface, fixes #362Santiago M. Mola2017-04-271-2/+2
| | | | | | | | | | * add internal *url.URL implementation for regular URLs. * add internal implementation for SCP-like URLs.
* | support force push (refspec with +)Santiago M. Mola2017-04-271-22/+64
|/ | | | | * add support for force push * add support for push of new references
* fix format string issues as found by go vetSantiago M. Mola2017-04-261-1/+1
|
* project: move imports from srcd.works to gopkg.inAntonio Jesus Navarro Perez2017-03-071-13/+13
| | | | To be able to fix #261 we will move again to gopkg.in before v4 stable release.
* Add full stops and keep implementation details as internal comments.Antonio Jesus Navarro Perez2017-03-031-2/+2
|
* improve git package documentation (fix #231)Antonio Jesus Navarro Perez2017-03-031-1/+1
|
* plumbing/revlist: input as a slice of hashes instead of commitsAntonio Jesus Navarro Perez2017-02-271-12/+6
| | | | | | | - Now the input of the method Objects inside revlist package is a slice of hashes instead of commits. Hashes can be from Blobs, Trees and Commits objects. - ObjectStorer now is used to obtain the object content using hashes slice. - This PR fix #222. Now a test into upload_pack_test.go file is not skipped anymore. - Remove code from remote.go and server.go that is not necessary.
* submodule init implementationMáximo Cuadros2017-02-121-3/+6
|
* documentation changesMáximo Cuadros2017-01-311-5/+5
|
* new srcd.works/go-git.v4 pathMáximo Cuadros2017-01-301-13/+13
|
* Repository.Progress moved as a field in *Options (#237)Máximo Cuadros2017-01-301-5/+5
|
* transport: remove SetAuth, fixes #206 (#210)Anthony Weems2017-01-171-6/+6
| | | | | * remove SetAuth functions, implement at NewUploadPackSession/NewReceivePackSession level. * propagate transport.Auth from Fetch/Pull/Clone options to the transport API.
* remote: fix empty-git-upload-pack error in fetch, when the reference points ↵Máximo Cuadros2017-01-121-3/+4
| | | | to a non-commit object (#209)
* doc: clarify return values of Pull/Fetch. (#205)Santiago M. Mola2017-01-121-0/+2
|
* server: add git server implementation (#190)Santiago M. Mola2017-01-041-33/+11
| | | | | | | | | | | | | | | * server: add generic server implementation (transport-independent), both for git-upload-pack and git-receive-pack. * server: move internal functions to internal/common. * cli: add git-receive-pack and git-upload-pack implementations. * format/packfile: add UpdateObjectStorage function, extracted from Remote. * transport: implement tranport RPC-like, only with git-upload-pack and git-receive-pack methods. Client renamed to Transport. * storer: add storer.Storer interface. * protocol/packp: add UploadPackResponse constructor with packfile. * protocol/packp: fix UploadPackResponse encoding, add tests. * protocol/packp/capability: implement All.
* remote: add Push (#178)Santiago M. Mola2016-12-191-5/+228
| | | | | | | | | | | | * remote: add Push. * add Push method to Remote. * add method Push to Repository. * examples: add push example. * requested changes * add tests, fixes