aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing
Commit message (Collapse)AuthorAgeFilesLines
* worktree, reset implementation and status improvementsMáximo Cuadros2017-04-122-13/+16
|
* merkletrie: filesystem and index speedup and documentationMáximo Cuadros2017-04-111-18/+11
|
* merge, Repository.LogMáximo Cuadros2017-04-1110-135/+164
|\
| * Add Repository.Log() method (fix #298)Antonio Jesus Navarro Perez2017-04-115-127/+150
| | | | | | | | | | | | | | | | | | | | - CommitIter is now an interface - The old CommitIter implementation is now called StorerCommitIter - CommitWalker and CommitWalkerPost are now iterators (CommitPreIterator and CommitPostIterator). - Remove Commit.History() method. There are so many ways to iterate a commit history, depending of the use case. Now, instead of use the History() method, you must use CommitPreIterator or CommitPostIterator. - Move commitSorterer to references.go because is the only place that it is used, and it must not be used into another place. - Make References method private, it must only be used into blame logic. - Added a TODO into references method, where the sortCommits is used to remove it in a near future.
| * plumbing: transport, handle 403 in http transportChris Dostert2017-04-105-8/+14
| |
* | plumbing: object, public Tree.FindEntry and minor diff changesMáximo Cuadros2017-04-114-8/+17
| |
* | plumbing: format, index stringerMáximo Cuadros2017-04-111-0/+23
|/
* Set correct modes to change_adaptor testsAntonio Jesus Navarro Perez2017-04-061-0/+6
|
* object: fix Change.Files() method behavior (fix #317)Antonio Jesus Navarro Perez2017-04-062-0/+56
| | | | | - If 'from' or 'to' are tree entries that aren't files, Files() method will return nil instead of object not found error. - Added a test checking this using modules fixture.
* Work around a Go bug when parsing timezonesNick Thomas2017-03-301-1/+6
|
* Merge pull request #314 from lupine/249-fix-bufio-buffer-fullMáximo Cuadros2017-03-284-2/+36
|\ | | | | plumbing: Use ReadBytes() rather than ReadSlice()
| * plumbing: Use ReadBytes() rather than ReadSlice()Nick Thomas2017-03-274-2/+36
| |
* | plumbing: Reference, support slash separated branch (#302)Yusuke Hatanaka2017-03-282-2/+26
| |
* | Merge pull request #305 from mvdan/history-reverseSantiago M. Mola2017-03-272-7/+59
|\ \ | |/ |/| plumbing/object: add WalkCommitHistoryPost func
| * plumbing/object: add WalkCommitHistoryPost funcDaniel Martí2017-03-272-7/+59
| | | | | | | | | | | | | | | | Also add a test. Make both the pre-order and post-order tests not sort commits, to actually test the order in which the commit history is walked. Fixes #223.
* | plumbing: ReferenceType as StringerMáximo Cuadros2017-03-222-0/+17
| |
* | Merge pull request #296 from ajnavarro/improvement/repositorySantiago M. Mola2017-03-212-1/+161
|\ \ | |/ |/| git: Repository methods changes
| * Make referenceFilteredIter privateAntonio Jesus Navarro Perez2017-03-061-5/+5
| |
| * git: Repository methods changesAntonio Jesus Navarro Perez2017-03-062-1/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To have a more consistent public API, we decided to rename some methods, and add others: - Commit method renamed to CommitObject - Commits method renamed to CommitObjects - Tree method renamed to TreeObject - Trees method renamed to TreeObjects - Tags method renamed to TagObjects - Tag method renamed to TagObject - Added method Tags that returns tag references - Added method Branches that returns branch references - Added method Notes that returns note references - Added BlobObject method - Added BlobObjects method Also, we added more functionality related to references: - Added iterator to iterate References with a specific filter Some notes: - #298
* | use go-billy.v2 versionAntonio Jesus Navarro Perez2017-03-102-3/+3
| |
* | project: move imports from srcd.works to gopkg.inAntonio Jesus Navarro Perez2017-03-07124-289/+289
|/ | | | To be able to fix #261 we will move again to gopkg.in before v4 stable release.
* difftree: simplify hash comparison with deprecated files modesAlberto Cortés2017-03-033-51/+31
| | | | | | | | | | Difftree hash comparisson was quite complex because the hashes of deprecated files were diferent from the hashes of regular files. But git's difftree really treat them as equal. This patch fix this by making treenoder return the same hash for regular files than for deprecated files; now the hash comparison function is just a bytes.Equal call.
* Merge pull request #299 from ajnavarro/fix/read-allSantiago M. Mola2017-03-031-4/+4
|\ | | | | Return values of Read not checked (fix #65)
| * Return values of Read not checked (fix #65)Antonio Jesus Navarro Perez2017-03-021-4/+4
| |
* | replace os.FileMode use with filemode.FileModeAlberto Cortés2017-03-0112-255/+221
| |
* | new filemode packageAlberto Cortés2017-03-012-0/+536
|/
* Merge pull request #294 from ajnavarro/improvement/todos-documentationSantiago M. Mola2017-03-014-8/+8
|\ | | | | Remove TODOs from documentation
| * Remove TODOs from documentationAntonio Jesus Navarro Perez2017-02-284-8/+8
| |
* | Merge pull request #292 from ajnavarro/improvement/revlistMáximo Cuadros2017-02-284-86/+138
|\ \ | |/ |/| plumbing/revlist: input as a slice of hashes instead of commits
| * plumbing/revlist: input as a slice of hashes instead of commitsAntonio Jesus Navarro Perez2017-02-274-86/+138
| | | | | | | | | | | | | | - 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.
* | Merge pull request #289 from ajnavarro/documentation/cacheSantiago M. Mola2017-02-273-16/+21
|\ \ | | | | | | plumbing/cache: specify units in memory size (Fix #234)
| * | plumbing/cache: specify units in memory size (Fix #234)Antonio Jesus Navarro Perez2017-02-273-16/+21
| |/
* | Merge pull request #288 from ajnavarro/documentation/plumbingMáximo Cuadros2017-02-277-11/+56
|\ \ | |/ |/| plumbing: improve documentation (Fix #242)
| * plumbing: improve documentation (Fix #242)Antonio Jesus Navarro Perez2017-02-237-11/+56
| |
* | Added documentation to Diff methodAntonio Jesus Navarro Perez2017-02-241-0/+1
| |
* | plumbing/object: move difftree to object packageAntonio Jesus Navarro Perez2017-02-248-66/+66
| | | | | | | | | | - To avoid ciclic dependency errors, we move all the difftree files to object package. - Added Diff method to Tree object.
* | Merge pull request #286 from ajnavarro/fix/reference-iteratorMáximo Cuadros2017-02-242-1/+25
|\ \ | | | | | | plumbing/storer: referenceIterator now returns the error if any
| * | plumbing/storer: referenceIterator now returns the error if anyAntonio Jesus Navarro Perez2017-02-232-1/+25
| |/
* | difftree: ignore permissions changes between regular filesAlberto Cortés2017-02-222-6/+45
| | | | | | | | Fix issue #279.
* | test for issue 279Alberto Cortés2017-02-222-4/+28
|/
* Merge pull request #282 from mcuadros/ssh-agent-fixMáximo Cuadros2017-02-212-3/+26
|\ | | | | plumbing/transport: git, error on empty SSH_AUTH_SOCK
| * plumbing/transport: git, error on empty SSH_AUTH_SOCKMáximo Cuadros2017-02-212-3/+26
| |
* | *: update tests to meet new submodule fixtureMáximo Cuadros2017-02-212-4/+6
| |
* | plumbing/transport: client avoid panics on nil protocolMáximo Cuadros2017-02-212-16/+26
|/
* Merge pull request #278 from ajnavarro/improvement/move-cache-to-plumbingMáximo Cuadros2017-02-215-1/+216
|\ | | | | cache: move package to plumbing
| * cache: move package to plumbingAntonio Jesus Navarro Perez2017-02-215-1/+216
| | | | | | | | Because cache package is only intended to be used at internal level, we move it to the plumbing package.
* | rebase masterMáximo Cuadros2017-02-215-0/+1036
|\|
| * difftree for git.Trees (#273)Alberto Cortés2017-02-217-536/+1269
| | | | | | | | | | | | | | | | | | | | | | | | | | Last PR to fix #82: This PR modifies the difftree package itself. The old version extracted the files in both trees and compare them by hand. The new version turn the trees into merkletrie.Noders and call the merkletrie.Difftree function on them. How to review this PR: treenoder.go: defines the treeNoder type that wraps a git.Tree and implements merkletrie.Noder. change.go: defines the type of the output of a difftree operation. The type is the same as before, but I have moved it into its own file to keep the package organized. The old package defines the Action type too (insert, delete, modify), now, we reuse merkletrie.Action and it is no longer a field, but a method. change_adaptor.go: defines functions to turn merkletrie.Changes into difftree.Changes. difftree.go: before this patch this file holds all the logic to do a difftree, now it just turns the git.Trees into treeNoders, call merkletrie.difftree on them, and turns the resulting merkletrie.Changes into difftree.Changes. The only interesting piece of code here is that noders don't have the concept of mode (file permissions). The treenoder type codifies git.Tree modes into the merkletrie.Noder hash, so changes in the mode of a file are detected as modifications, just as the original git diff-tree command does.
| * plumbing/storer: add RemoveReferenceSantiago M. Mola2017-02-161-0/+1
| |
| * transport/file: fix race condition on test (#267)Alberto Cortés2017-02-151-45/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes, the `TestClone` and `TestPush` tests of `transport/file` fail in travis. This is due to a race condition caused by an incorrect usage of `Cmd.Wait()` while reading from the output and error pipes of the command. This patch fixes the problem by using `Cmd.CombinedOutput()` instead of calling `Cmd.Start()` and `Cmd.Wait()` while reading from the output and error pipes. Details: From the `exec` package documentation: ``` Wait will close the pipe after seeing the command exit, so most callers need not close the pipe themselves; however, an implication is that it is incorrect to call Wait before all reads from the pipe have completed. For the same reason, it is incorrect to call Run when using StdoutPipe. ``` In our tests, the old `execAndGetOutput` function was creating two gorutines to read from the stderr and stdout pipes of the command and then call `Wait` on the command. This caused a race condition: when the `Wait` call finished before the gorutines have read from the pipes, they returned caused an error on `outErr`. The problem only happens sometimes on travis. To reproduce the problem locally, just add a call to time.Sleep(time.Second) to the gorutine before its `ioutil.ReadAll` call to delay them, then `Wait` will always finish before them, closing the pipes, and the gorutines will fail. The returned error detected by the test will be: ``` FAIL: server_test.go:55: ServerSuite.TestClone server_test.go:65: c.Assert(err, IsNil, Commentf("STDOUT:\n%s\nSTDERR:\n%s\n", stdout, stderr)) ... value *os.PathError = &os.PathError{Op:"read", Path:"|0", Err:0x9} ("read |0: bad file descriptor") ... STDOUT: STDERR: ```