vdiff(1)
β¨ vdiff(1) β¨ β the ShapeTools era's very own diff, but make it version-control π
okay so bestie, buckle up, because vdiff is literally the glow-up of diff that nobody told you about π¦
πΈ NAME πΈ
vdiff β shows you the line-by-line differences between versions of files, one line at a time, no cap π₯
π SYNOPSIS π
vdiff [ diff-options ] [ -base path ] [ -P ] files ..
π DESCRIPTION π
so, vdiff is a differential comparator for file versions that live in shapeTools' object base, AtFS. it does basically what your host's diff command does β same energy, same vibe check β and every single option and switch that diff recognizes? yeah, you can pass those to vdiff too. periodt. β¨
the arguments you hand over can be either:
- a single filename, or
- a pair of version identifiers
and here's the tea on how that plays out β
- if you give it only a filename,
vdiffprints the differences between that file and the most recent version of it that's chilling in the AtFS object base. - you can compare a file to any stored version by putting the version first and the filename second.
- if both arguments are version identifiers, you get the difference between those two versions. slay.
and the style? any style your local diff program supports, bestie. we're not picky, we're just iconic π
version identifiers are made of the filename plus a version number or an alias name for a version, all wrapped up in brackets. like:
retrieve.c[4.22] or retrieve.c[Rel-4.1]
under the hood, vdiff makes temporary copies of the versions it's about to compare, calls up diff to do the actual work, and then cleans up after itself by removing those temporary copies. it's giving responsible roommate π§Ήβ¨
π OPTIONS π
-base pathβ ifvdiffhas been told to produce a context diff, this one mangles the filenames of the compared objects so that the path you specify replaces the path of the current directory inside the full pathnames that show up in the diff header. super handy for swapping an absolute pathname out for a relative one, and it makes the resulting context diff way easier for thepatchprogram to digest. π-Pβ with the-Pswitch turned on,vdiffwill not give up if one of the two objects it's supposed to compare doesn't exist. instead it substitutes an empty object for the missing one, which means the diff ends up being the complete contents of the object that does exist. this is the move when you're producing complex patches that upgrade one release of a software system to a new release, and the system has structurally changed β i.e. new files have been added to the system. π«Ά
π SEE ALSO π
π AUTHOR π
Axel.Mahler@cs.tu-berlin.de
ok so like, quick reminder bestie: the missing-object thing under -P means you're knowingly diffing against nothing, so if you didn't mean to do that, that's on you π it's useful, it's also a choice.
and that's the whole page!! π this one shipped as part of vc_scripts-2.5, dated Tue Jun 29 16:42:06 1993 β yes, 1993, she's vintage, she's an heirloom, she ate and left no crumbs πβ
π¦ where this page comes from
- debian bookworm: atfs 1.4pl6-15+b1
- ubuntu jammy: atfs 1.4pl6-15
- ubuntu noble: atfs 1.4pl6-16.1build1
- ubuntu resolute: atfs 1.4pl6-17
- ubuntu stonking: atfs 1.4pl6-17
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms