Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2019-04-04 16:59:04 +0300
committerJacob Vosmaer <jacob@gitlab.com>2019-04-04 16:59:04 +0300
commit861da09f31d05bba746ba8b8ff62136cc9a2b9f1 (patch)
tree7e33fe3299472e26483f9296a4cac7f19499a90c
parent8c70386e71013be933d9ac185b121d199f4cad44 (diff)
Clean up a littlejv-test-pack-concat
-rw-r--r--pack-objects-clone-bundle/pack-objects-bundle.go74
1 files changed, 44 insertions, 30 deletions
diff --git a/pack-objects-clone-bundle/pack-objects-bundle.go b/pack-objects-clone-bundle/pack-objects-bundle.go
index aafc8ece9..ed712458e 100644
--- a/pack-objects-clone-bundle/pack-objects-bundle.go
+++ b/pack-objects-clone-bundle/pack-objects-bundle.go
@@ -15,6 +15,8 @@ import (
"strings"
)
+const bundleFileName = "clone.bundle"
+
func main() {
if len(os.Args) < 2 {
log.Fatal("not enough argument to pack-objects hook")
@@ -51,48 +53,21 @@ func _main(packObjects []string) error {
return fallback(packObjects, request)
}
- bundleFile, err := os.Open("clone.bundle")
+ bundleFile, err := os.Open(bundleFileName)
if err != nil {
return fallback(packObjects, request)
}
defer bundleFile.Close()
bundle := bufio.NewReader(bundleFile)
- bundleHeader, err := readLine(bundle)
- if err != nil {
- return err
- }
- if bundleHeader != "# v2 git bundle" {
- return fmt.Errorf("unexpected bundle header: %q", bundleHeader)
- }
request = bytes.NewBuffer(bytes.TrimSpace(request.Bytes()))
if _, err := request.WriteString("\n"); err != nil {
return err
}
- for {
- refLine, err := readLine(bundle)
- if err != nil {
- return err
- }
-
- if refLine == "" {
- break
- }
-
- split := strings.SplitN(refLine, " ", 2)
- if len(split) != 2 {
- return fmt.Errorf("invalid ref line: %q", refLine)
- }
- id := split[0]
- if !shaRegex.MatchString(id) {
- return fmt.Errorf("invalid object ID: %q", id)
- }
-
- if _, err := fmt.Fprintln(request, id); err != nil {
- return err
- }
+ if err := addBundleRefsToRequest(request, bundle); err != nil {
+ return err
}
ctx, cancel := context.WithCancel(context.Background())
@@ -150,6 +125,8 @@ func _main(packObjects []string) error {
return err
}
+ fmt.Fprintf(os.Stderr, "re-used from %s: %d objects\n", bundleFileName, bundleReader.NumObjects())
+
return nil
}
@@ -169,3 +146,40 @@ func readLine(r *bufio.Reader) (string, error) {
return string(line[:len(line)-1]), nil
}
+
+func addBundleRefsToRequest(request io.Writer, bundle *bufio.Reader) error {
+ bundleHeader, err := readLine(bundle)
+ if err != nil {
+ return err
+ }
+ if bundleHeader != "# v2 git bundle" {
+ return fmt.Errorf("unexpected bundle header: %q", bundleHeader)
+ }
+
+ for {
+ refLine, err := readLine(bundle)
+ if err != nil {
+ return err
+ }
+
+ if refLine == "" {
+ break
+ }
+
+ split := strings.SplitN(refLine, " ", 2)
+ if len(split) != 2 {
+ return fmt.Errorf("invalid ref line: %q", refLine)
+ }
+
+ id := split[0]
+ if !shaRegex.MatchString(id) {
+ return fmt.Errorf("invalid object ID: %q", id)
+ }
+
+ if _, err := fmt.Fprintln(request, id); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}