aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing
Commit message (Collapse)AuthorAgeFilesLines
* plumbing: format/packfile, Fix data race and resource leak.Ed Bardsley2019-06-032-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two problems are fixed: - Buffers are not returned to the pool in the case of errors. - Per https://golang.org/pkg/bytes/#Buffer.Bytes, the slice returned from bytes.Buffer.Bytes() is only valid until the next modification of the buffer, so it must be copied before the buffer is returned to the pool. Running `go test -race` detected the following: ``` ================== WARNING: DATA RACE Write at 0x00c000224020 by goroutine 15: bytes.(*Buffer).WriteByte() /usr/local/Cellar/go/1.11.5/libexec/src/bytes/buffer.go:271 +0xc8 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.diffDelta() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go:95 +0x505 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.getDelta() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go:60 +0x4ae vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).tryToDeltify() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:309 +0x398 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).walk() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:262 +0x33b vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack.func1() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:70 +0x6a Previous read at 0x00c000224020 by goroutine 8: runtime.slicecopy() /usr/local/Cellar/go/1.11.5/libexec/src/runtime/slice.go:221 +0x0 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.getDelta() vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go:53 +0x5e2 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).tryToDeltify() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:309 +0x398 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).walk() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:262 +0x33b vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack.func1() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:70 +0x6a Goroutine 15 (running) created at: vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:69 +0x761 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*Encoder).Encode() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go:52 +0xb1 vendor/gopkg.in/src-d/go-git%2ev4.pushHashes.func1() vendor/gopkg.in/src-d/go-git.v4/remote.go:1026 +0x102 Goroutine 8 (finished) created at: vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:69 +0x761 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*Encoder).Encode() vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go:52 +0xb1 vendor/gopkg.in/src-d/go-git%2ev4.pushHashes.func1() vendor/gopkg.in/src-d/go-git.v4/remote.go:1026 +0x102 ================== ``` Signed-off-by: Ed Bardsley <ewb@uber.com>
* Merge pull request #1097 from dpordomingo/merge-base-coreMáximo Cuadros2019-06-034-0/+971
|\ | | | | Create merge-base feature
| * Create merge-base featureDavid Pordomingo2019-06-034-0/+971
| | | | | | | | Signed-off-by: David Pordomingo <David.Pordomingo.F@gmail.com>
* | Remove unnecessary mmap usage from testsFilip Navara2019-05-071-6/+4
| | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | Add doc.go for commitgraph packagesFilip Navara2019-05-074-0/+113
| | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | Fix object/commitgraph testsFilip Navara2019-05-031-0/+3
| | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | Move CommitNode/CommitNodeIndex into separate object/commitgraph packageFilip Navara2019-05-035-20/+23
| | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | Merge remote-tracking branch 'origin/master' into commitgraph-objFilip Navara2019-05-033-52/+90
|\ \
| * | ssh: leverage proxy.DialJacob Blain Christen2019-05-022-1/+62
| | | | | | | | | | | | | | | | | | | | | This enables interacting with git remotes over SSH when behind a SOCKSv5 firewall. Signed-off-by: Jacob Blain Christen <dweomer5@gmail.com>
| * | Merge pull request #1136 from filipnavara/idxfile-nobufMáximo Cuadros2019-04-271-51/+28
| |\ \ | | | | | | | | plumbing: format/idxfile, avoid creating temporary buffers to decode integers
| | * | plumbing: format/idxfile, avoid looking up the fanout mapping in the ↵Filip Navara2019-04-261-10/+7
| | | | | | | | | | | | | | | | | | | | | | | | iterator twice Signed-off-by: Filip Navara <filip.navara@gmail.com>
| | * | plumbing: format/idxfile, save another 18% of time in genOffsetHash by not ↵Filip Navara2019-04-251-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | using iterator and not loading CRC Signed-off-by: Filip Navara <filip.navara@gmail.com>
| | * | plumbing: format/idxfile, avoid creating temporary buffers to decode integersFilip Navara2019-04-251-32/+15
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Expose Generation property on CommitNodeFilip Navara2019-04-293-0/+18
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | pluming: object, adjust to new API names in format/commitgraphFilip Navara2019-04-262-19/+19
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Merge branch 'master' into commitgraph-objFilip Navara2019-04-2618-67/+1165
|\| | |
| * | | Merge pull request #1134 from filipnavara/commitgraph-fmt-3Máximo Cuadros2019-04-265-63/+61
| |\ \ \ | | |/ / | |/| | plumbing: format/commitgraph, rename structs/fields to follow the terms used by git more closely
| | * | plumbing: format/commitgraph, rename structs/fields to follow the terms used ↵Filip Navara2019-04-255-59/+59
| | | | | | | | | | | | | | | | | | | | | | | | by git more closely Signed-off-by: Filip Navara <navara@emclient.com>
| | * | plumbing: format/commitgraph, clean up error handlingFilip Navara2019-04-253-6/+4
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | plumbing: object/{commit,tag} add EncodeWithoutSignature, Implement #1116Antoine GIRARD2019-04-244-4/+57
| |/ / | | | | | | | | | Signed-off-by: Antoine GIRARD <sapk@sapk.fr>
| * | plumbing: commit.Stats, fix panic on empty chucksMáximo Cuadros2019-04-241-0/+4
| | | | | | | | | | | | Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
| * | Merge pull request #1130 from saracen/gitattributesMáximo Cuadros2019-04-248-0/+1043
| |\ \ | | | | | | | | plumbing: format/gitattributes support
| | * | plumbing: format/gitattributes supportArran Walker2019-04-248-0/+1043
| | | | | | | | | | | | | | | | | | | | | | | | Implements gitattributes parsing, matching and attribute extraction. Signed-off-by: Arran Walker <arran.walker@fiveturns.org>
* | | | Add test for CommitNode.Commit() and CommitNode.Tree()Filip Navara2019-04-241-17/+27
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Add test for traversal on mixed object and commit-graphFilip Navara2019-04-241-0/+30
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Update commentsFilip Navara2019-04-243-3/+6
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Add test for CommitNode.ParentNodes()Filip Navara2019-04-241-2/+26
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Code cleanup, split into more files for clarityFilip Navara2019-04-243-205/+200
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Move Commit() to CommitNode APIFilip Navara2019-04-241-11/+19
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Simplify the CommitNode API, make it look more like CommitFilip Navara2019-04-243-87/+65
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | plumbing: object, add APIs for traversing over commit graphsFilip Navara2019-04-243-0/+499
|/ / / | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | Merge pull request #1128 from filipnavara/commitgraph-fmtMáximo Cuadros2019-04-245-0/+689
|\ \ \ | | | | | | | | plumbing: format/commitgraph, add APIs for reading and writing commit-graph files
| * | | Remove debug print, fix large edge count calculation to make the reencoded ↵Filip Navara2019-04-242-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | file binary identical Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Split OpenFileIndex into smaller functionsFilip Navara2019-04-242-32/+51
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Split Encoder into smaller functionsFilip Navara2019-04-242-55/+95
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Rename fixture tag to commit-graphFilip Navara2019-04-241-3/+3
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | plumbing: format/commitgraph, add APIs for reading and writing commit-graph ↵Filip Navara2019-04-245-0/+632
| | | | | | | | | | | | | | | | | | | | | | | | files Signed-off-by: Filip Navara <filip.navara@gmail.com>
* | | | Merge pull request #1121 from filipnavara/small-deltasMáximo Cuadros2019-04-241-56/+126
|\ \ \ \ | |/ / / |/| | | plumbing: packfile, apply small object reading optimization also for delta objects
| * | | Populate the offsetToType cache in the iterator even for the skipped objectsFilip Navara2019-04-241-0/+3
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Better fix for the getObjectType problem in the iteratorFilip Navara2019-04-241-6/+9
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Remove duplicate cache lookup in getObjectContent, it is already done in ↵Filip Navara2019-04-241-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | FSObject Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Fix an error where getObjectType would seek in file and mess up the position ↵Filip Navara2019-04-241-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | used by getNextObject in the subsequent statement Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Reduce indentationFilip Navara2019-04-231-7/+5
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Add one more cache check to the iteratorFilip Navara2019-04-231-2/+12
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | Address PR feedbackFilip Navara2019-04-231-2/+2
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Rename functionsFilip Navara2019-04-231-7/+9
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Avoid filling up the object cache from Packfile.GetByType with typ != ↵Filip Navara2019-04-231-17/+42
| | | | | | | | | | | | | | | | | | | | | | | | plumbing.AnyObject Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Get the buffer from pool in fillOFSDeltaObjectContent instead of creating ↵Filip Navara2019-04-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | new one Signed-off-by: Filip Navara <filip.navara@gmail.com>
| * | | Update commentFilip Navara2019-04-211-3/+3
| | | | | | | | | | | | | | | | Signed-off-by: Filip Navara <navara@emclient.com>
| * | | plumbing: packfile, apply small object reading optimization also for delta ↵Filip Navara2019-04-201-23/+61
| | | | | | | | | | | | | | | | | | | | | | | | objects Signed-off-by: Filip Navara <navara@emclient.com>