1 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
看起來change.Files()
只給出了帶有 的文件的名稱to.Name
,沒有存儲(chǔ)庫內(nèi)的路徑,但是change.toString()
給出了完整路徑。
因此,如果您想使用Tree.Diff,您必須獲取如下路徑:
func getChangeName(change *object.Change) string {
? ? ? ? var empty = object.ChangeEntry{}
? ? ? ? if change.From != empty {
? ? ? ? ? ? return change.From.Name
? ? ? ? }
? ? ? ? return change.To.Name
}
因此,看起來您可以根據(jù)您的需要選擇Tree.Diff或Patch.Stats :
? ?currentTree, err := commit.Tree()
? ? CheckIfError(err)
? ? prevTree, err := prevCommit.Tree()
? ? CheckIfError(err)
? ? patch, err := currentTree.Patch(prevTree)
? ? CheckIfError(err)
? ? fmt.Println("----- Patch Stats ------")
? ? var changedFiles []string
? ? for _, fileStat := range patch.Stats() {
? ? ? ? fmt.Println(fileStat.Name)
? ? ? ? changedFiles = append(changedFiles,fileStat.Name)
? ? }
? ? changes, err := currentTree.Diff(prevTree)
? ? CheckIfError(err)
? ? fmt.Println("----- Changes -----")
? ? for _, change := range changes {
? ? ? ? // Ignore deleted files
? ? ? ? action, err := change.Action()
? ? ? ? CheckIfError(err)
? ? ? ? if action == merkletrie.Delete {
? ? ? ? ? ? //fmt.Println("Skipping delete")
? ? ? ? ? ? continue
? ? ? ? }
? ? ? ? // Get list of involved files
? ? ? ? name := getChangeName(change)
? ? ? ? fmt.Println(name)
? ? }
Patch.Stats將跳過二進(jìn)制文件,而Tree.Diff將讓您忽略刪除。
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)