summaryrefslogtreecommitdiff
path: root/refs.update.go
blob: f103417a3bf9e523f56a50ce72e0a46b0d0abea8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package gitpb

/*
// Update repo.Refs from .git/
func (repo *Repo) UpdateGit() error {
	// delete the old hash
	// r.DeleteByHash(hash)
	repo.Refs = nil

	tags := []string{"%(objectname)", "%(creatordate)", "%(*authordate)", "%(refname)", "%(subject)"}
	format := strings.Join(tags, "_,,,_")
	cmd := []string{"git", "for-each-ref", "--sort=taggerdate", "--format", format}
	// log.Info("RUNNING:", strings.Join(cmd, " "))
	result := shell.PathRunQuiet(repo.FullPath, cmd)
	if result.Error != nil {
		log.Warn("git for-each-ref error:", result.Error)
		return result.Error
	}

	lines := result.Stdout
	// reverse the git order
	slices.Reverse(lines)

	var refName string
	var hash string
	var subject string
	var ctime time.Time

	for i, line := range lines {
		var parts []string
		parts = make([]string, 0)
		parts = strings.Split(line, "_,,,_")
		if len(parts) != 5 {
			log.Info("tag error:", i, parts)
			continue
		}
		refName = parts[3]
		hash = parts[0]

		ctime = getGitDateStamp(parts[1])

		subject = parts[4]
	}

	newr := Ref{
		Hash:    hash,
		Subject: subject,
		RefName: refName,
		Ctime:   timestamppb.New(ctime),
	}

	repo.AppendRef(&newr)
	return nil
}
*/