func runDiff(args []string) int { db1, value1, err := spec.GetPath(args[0]) d.CheckErrorNoUsage(err) if value1 == nil { d.CheckErrorNoUsage(fmt.Errorf("Object not found: %s", args[0])) } defer db1.Close() db2, value2, err := spec.GetPath(args[1]) d.CheckErrorNoUsage(err) if value2 == nil { d.CheckErrorNoUsage(fmt.Errorf("Object not found: %s", args[1])) } defer db2.Close() if summarize { diff.Summary(value1, value2) return 0 } pgr := outputpager.Start() defer pgr.Stop() diff.Diff(pgr.Writer, value1, value2) return 0 }
func writeDiffLines(node LogNode, db datas.Database, maxLines, lineno int, w io.Writer) (lineCnt int, err error) { mlw := &maxLineWriter{numLines: lineno, maxLines: maxLines, node: node, dest: w, needsPrefix: true, showGraph: showGraph} parents := node.commit.Get(datas.ParentsField).(types.Set) var parent types.Value = nil if parents.Len() > 0 { parent = parents.First() } if parent == nil { _, err = fmt.Fprint(mlw, "\n") return 1, err } parentCommit := parent.(types.Ref).TargetValue(db).(types.Struct) err = diff.Diff(mlw, parentCommit.Get(datas.ValueField), node.commit.Get(datas.ValueField)) d.PanicIfNotType(err, MaxLinesErr) if err != nil { mlw.forceWrite([]byte("...\n")) mlw.numLines++ err = nil } if !node.lastCommit { mlw.forceWrite([]byte("\n")) } return mlw.numLines, err }