Browse Source

Collect commits

master
Quentin 1 year ago
parent
commit
3ed9f15672
Signed by: quentin GPG Key ID: A98E9B769E4FF428
  1. 13
      checks.go
  2. 51
      commit.go
  3. 2
      seafile_recovery.go

13
checks.go

@ -2,22 +2,15 @@ package main
import(
"log"
"io/ioutil"
"os"
"path/filepath"
)
func checkRootFolder(storage string) {
files, err := ioutil.ReadDir(storage)
if err != nil { log.Fatal(err) }
checked_folders := map[string]bool{"fs": false, "commits": false, "blocks": false}
for _, f := range files {
if _, ok := checked_folders[f.Name()]; ok {
info, err := os.Stat(filepath.Join(storage, f.Name()));
if err == nil && info.IsDir() {
checked_folders[f.Name()] = true
}
for f, _ := range checked_folders {
if info, err := os.Stat(filepath.Join(storage, f)); err == nil && info.IsDir() {
checked_folders[f] = true
}
}

51
commit.go

@ -2,8 +2,16 @@ package main
import (
"log"
"io/ioutil"
"path/filepath"
)
type RepoCommits struct {
Config configCollect
CommitDesc map[string]string
CommitContent map[string]Commit
}
type Commit struct {
CommitId string `json:"commit_id"`
RootId string `json:"root_id"`
@ -22,6 +30,45 @@ type Commit struct {
}
func cmdCommit(config configCollect) {
rexists := repoExistsIn(config.Storage, config.RepoId)
if !rexists["commits"] { log.Fatal("No commits folder found for repo ",config.RepoId) }
rc := NewRepoCommits(config)
rc.CollectDescs()
rc.PrintDescs()
}
func NewRepoCommits (config configCollect) *RepoCommits {
rc := new(RepoCommits)
rc.Config = config
rc.CommitDesc = make(map[string]string)
rc.CommitContent = make(map[string]Commit)
return rc
}
func (rc* RepoCommits) CollectDescs() {
baseFolder := filepath.Join(rc.Config.Storage, "commits", rc.Config.RepoId)
log.Println(baseFolder)
layer1, err := ioutil.ReadDir(baseFolder)
if err != nil { log.Fatal(err) }
for _, l1 := range layer1 {
intFolder := filepath.Join(baseFolder, l1.Name())
layer2, err := ioutil.ReadDir(intFolder)
if err != nil { log.Fatal(err) }
for _, l2 := range layer2 {
commitId := l1.Name() + l2.Name()
commitPath := filepath.Join(intFolder, l2.Name())
rc.CommitDesc[commitId] = commitPath
}
}
}
func (rc* RepoCommits) PrintDescs() {
limit := 10
for id, path := range rc.CommitDesc {
log.Println(id, path)
limit = limit - 1
if limit < 0 {
log.Println("Too many commits, output has been truncated")
break
}
}
log.Println("Repo", rc.Config.RepoId, "contains", len(rc.CommitDesc), "commits")
}

2
seafile_recovery.go

@ -22,8 +22,10 @@ Options:
opts.Bind(&config)
checkRootFolder(config.Storage)
rexists := repoExistsIn(config.Storage, config.RepoId)
if config.Commits {
if !rexists["commits"] { log.Fatal("No commits folder found for repo ",config.RepoId) }
cmdCommit(config)
} else {
log.Fatal("This command is not implemented")

Loading…
Cancel
Save