All Projects → xorhash → Fh

xorhash / Fh

Licence: isc
file history with ed(1), diff(1), awk(1), sed(1) and sh(1)

Labels

Projects that are alternatives of or similar to Fh

Unix Text Commands
Unix Text Processing Command Reference
Stars: ✭ 78 (-27.78%)
Mutual labels:  unix
Xnotify
read notifications from stdin and pop them up on the screen
Stars: ✭ 97 (-10.19%)
Mutual labels:  unix
Unix Permissions
Swiss Army knife for Unix permissions
Stars: ✭ 106 (-1.85%)
Mutual labels:  unix
Gvcci
color extraction to turn images into 16 color palettes
Stars: ✭ 86 (-20.37%)
Mutual labels:  unix
Bin
~/bin
Stars: ✭ 93 (-13.89%)
Mutual labels:  unix
Autopwn
A simple bash based metasploit automation tool!
Stars: ✭ 99 (-8.33%)
Mutual labels:  unix
Oh
A new Unix shell.
Stars: ✭ 1,206 (+1016.67%)
Mutual labels:  unix
Serenity
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Stars: ✭ 16,842 (+15494.44%)
Mutual labels:  unix
Ldap4net
OpenLdap port for DotNet Core (Linux\OSX\Windows)
Stars: ✭ 93 (-13.89%)
Mutual labels:  unix
Minishell
As beautiful as a shell
Stars: ✭ 105 (-2.78%)
Mutual labels:  unix
Imscript
a collection of small and standalone utilities for image processing, written in C
Stars: ✭ 86 (-20.37%)
Mutual labels:  unix
Irccat
cat to IRC
Stars: ✭ 91 (-15.74%)
Mutual labels:  unix
Screen Recorder Ffmpeg Cpp
*Multimedia project* A screen recording application to capture your desktop and store in a video format. Click here to watch the demo
Stars: ✭ 98 (-9.26%)
Mutual labels:  unix
Jobber
An alternative to cron, with sophisticated status-reporting and error-handling
Stars: ✭ 1,217 (+1026.85%)
Mutual labels:  unix
Punk.py
unix SSH post-exploitation 1337 tool
Stars: ✭ 107 (-0.93%)
Mutual labels:  unix
Coax
A (barely working) native Wire client for Unix
Stars: ✭ 77 (-28.7%)
Mutual labels:  unix
Dte
A small, configurable console text editor (moved to https://gitlab.com/craigbarnes/dte)
Stars: ✭ 98 (-9.26%)
Mutual labels:  unix
Fzf
🌸 A command-line fuzzy finder
Stars: ✭ 40,965 (+37830.56%)
Mutual labels:  unix
Domain Check 2
Domain Expiration Check Shell Script Forked and Maintained by nixCraft
Stars: ✭ 107 (-0.93%)
Mutual labels:  unix
Covise
Collaborative Visualization and Simulation Environment, OpenCOVER and OddLOT
Stars: ✭ 101 (-6.48%)
Mutual labels:  unix

fh: file history

fh records changes to a file on a per-file basis, similar to RCS and SCCS. It is, however, considerably more primitive.

Design goals:

  • no support for multi-user environments (no locking, etc.)
  • implemented in shell script
  • must use ed(1)
  • should work or easily be made to work on 7th Edition UNIX

I've taken care not to use any shell scripting constructions that didn't exist in the Bourne shell, but I may have missed things; however, the shebang needs to be removed on 7th Edition UNIX.

fh uses a chain of ed(1) scripts to construct any version of a file. It even allows recording of commit messages.

Why?

I saw the following passage in diff(1) of 7th Edition UNIX:

The -e option produces a script of a, c and d commands for the editor ed, which will recreate file2 from file1. The -f option produces a similar script, not useful with ed, in the opposite order. In connection with -e, the following shell program may help maintain multiple versions of a file. Only an ancestral file ($1) and a chain of version-to-version ed scripts ($2,$3,...) made by diff need be on hand. A `latest version' appears on the standard output.

(shift; cat $*; echo ´1,$p´) ⎪ ed - $1

After some thinking, I figured it would be hilarious to actually implement a basic version control system on these primitives. In hindsight, it's probably closer to terrifying than hilarious.

License

ISC, see LICENSE.

Installation and usage

Copy the fl, fr and fu files to a directory in $PATH; make sure they are marked as executable. Copy the man pages fl.1, fr.1, fu.1 and fh.5 to a directory in $MANPATH.

For usage, see the supplied man pages. man.md is available on the web. For 7th Edition UNIX, the man pages written in mdoc macrosneed to be converted to old man macros first:

mkdir man
mandoc -Tman fl.1 > man/fl.1
mandoc -Tman fr.1 > man/fr.1
mandoc -Tman fu.1 > man/fu.1
mandoc -Tman fh.5 > man/fh.5
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].