Sfoglia il codice sorgente

Merge pull request #50 from achilleas-k/fix/web-upload-annex

LGTM
Michael Sonntag 6 anni fa
parent
commit
e7c876a713
3 ha cambiato i file con 22 aggiunte e 5 eliminazioni
  1. 16 4
      models/models_gin.go
  2. 1 1
      models/repo_editor.go
  3. 5 0
      vendor/github.com/G-Node/go-annex/add.go

+ 16 - 4
models/models_gin.go

@@ -103,18 +103,24 @@ func annexSetup(path string) {
 
 	// Initialise annex in case it's a new repository
 	if msg, err := gannex.Init(path, "--version=7"); err != nil {
-		log.Error(1, "Annex init failed: %v (%s)", err, msg)
+		log.Error(2, "Annex init failed: %v (%s)", err, msg)
+		return
+	}
+
+	// Upgrade to v7 in case the directory was here before and wasn't cleaned up properly
+	if msg, err := gannex.Upgrade(path); err != nil {
+		log.Error(2, "Annex upgrade failed: %v (%s)", err, msg)
 		return
 	}
 
 	// Enable addunlocked for annex v7
 	if msg, err := gannex.SetAddUnlocked(path); err != nil {
-		log.Error(1, "Failed to set 'addunlocked' annex option: %v (%s)", err, msg)
+		log.Error(2, "Failed to set 'addunlocked' annex option: %v (%s)", err, msg)
 	}
 
 	// Set MD5 as default backend
 	if msg, err := gannex.MD5(path); err != nil {
-		log.Error(1, "Failed to set default backend to 'MD5': %v (%s)", err, msg)
+		log.Error(2, "Failed to set default backend to 'MD5': %v (%s)", err, msg)
 	}
 
 	// Set size filter in config
@@ -128,7 +134,13 @@ func annexSync(path string) error {
 	if msg, err := gannex.ASync(path, "--content"); err != nil {
 		// TODO: This will also DOWNLOAD content, which is unnecessary for a simple upload
 		// TODO: Use gin-cli upload function instead
-		log.Error(1, "Annex sync failed: %v (%s)", err, msg)
+		log.Error(2, "Annex sync failed: %v (%s)", err, msg)
+		return fmt.Errorf("git annex sync --content [%s]", path)
+	}
+
+	// run twice; required if remote annex is not initialised
+	if msg, err := gannex.ASync(path, "--content"); err != nil {
+		log.Error(2, "Annex sync failed: %v (%s)", err, msg)
 		return fmt.Errorf("git annex sync --content [%s]", path)
 	}
 	return nil

+ 1 - 1
models/repo_editor.go

@@ -518,7 +518,7 @@ func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions)
 	}
 
 	if err := annexSync(localPath); err != nil { // Run full annex sync
-		return err
+		return fmt.Errorf("annex sync %s: %v", localPath, err)
 	}
 	annexUninit(localPath) // Uninitialise annex to prepare for deletion
 	StartIndexing(*repo)   // Index the new data

+ 5 - 0
vendor/github.com/G-Node/go-annex/add.go

@@ -19,6 +19,11 @@ func Init(dir string, args ...string) (string, error) {
 	return cmd.AddArguments(args...).RunInDir(dir)
 }
 
+func Upgrade(dir string) (string, error) {
+	cmd := git.NewACommand("upgrade")
+	return cmd.RunInDir(dir)
+}
+
 func Uninit(dir string, args ...string) (string, error) {
 	cmd := git.NewACommand("uninit")
 	return cmd.AddArguments(args...).RunInDir(dir)