aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2016-02-13 21:47:10 +0100
committerAdrian Kummerlaender2016-02-13 21:47:10 +0100
commit055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e (patch)
tree2d02ab1c72679022c4f95260eb70405efb51fcce
parent23b56fad3873b03a4b1f04e299104a7b52c62391 (diff)
downloadchange-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar.gz
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar.bz2
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar.lz
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar.xz
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.tar.zst
change-055bd52fd88f49b8aef4da4b7b7c6b38cb1f7e3e.zip
Add `README.md`
-rw-r--r--README.md37
1 files changed, 37 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dc9bdf6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,37 @@
+# change
+
+…transparent filesystem change tracking using function interposition.
+
+This experimental project consists of a library `libChangeLog` and a matching wrapper bash script named `change`. If one opens any application using `change` it automatically tracks common system calls used for manipulating filesystem contents and provides the user with a short summary including _diffs_ where appropriate.
+
+ λ ~/p/d/change ‣ change mv test example
+ renamed 'test' to 'example'
+ λ ~/p/d/change ‣ change vim example
+ removed '5405'
+ renamed 'example' to 'example~'
+ removed 'example~'
+ removed '/home/common/.viminfo'
+ renamed '/home/common/.viminfk.tmp' to '/home/common/.viminfo'
+ removed '/home/common/.vim/swap//%home%common%projects%dev%change%example.swp'
+ --- /home/common/projects/dev/change/example
+ +++ /home/common/projects/dev/change/example 2016-02-13 21:43:15.719355382 +0100
+ @@ -1,3 +1,5 @@
+ 1
+ +
+ 2
+ +
+ 3
+ λ ~/p/d/change ‣ change rm example
+ removed 'example'
+
+As we can see the library currently still exposes some of the internal doings of e.g. _vim_ that we don't really want to see in our usecase. The goal is to develop `change` into a utility that can be dropped in front of any non-suid (function interposition via `LD_PRELOAD` is thankfully not allowed for suid-executables) shell command and generate a summary that will explain the actual happenings of a terminal session. While this is not very useful for simple, self-explanatory commands such as `mv $this $to_that` it is certainly helpful whenever files are changed by interactive applications that do not provide their own directly visible logging such as text editors. Such an application will in turn be useful for e.g. documenting shell sessions.
+
+## Build
+
+ mkdir build
+ cd build
+ cmake ..
+ make
+ make install
+
+Note that this project depends on `boost::filesystem` as well as `boost::process` in addition to a current C++14 compiler.