ako*_*sch 5 postgresql binary version-control diff database-design
我在这里寻找数据库中有限形式的版本控制:
基本上答案至少应包含两件事:
小智 5
"大小是最重要的":如何使用PL/sh作为外部差异工具(如bsdiff?).
"我应该能够尽快获取文档的当前版本":在这种情况下,您将希望以"错误"的方式进行差异,因此每个修订版都涉及:
要回到旧版本,则需要迭代地将先前的差异应用为补丁,直到达到所需的修订.
无论你做什么,我认为在使用diff工具之前你需要先解压缩数据.原因如下:
dd if=/dev/urandom of=myfile.1 bs=1024 count=10
cp myfile.1 tmp; cat tmp >> myfile.1
cp myfile.1 tmp; cat tmp >> myfile.1
cp myfile.1 tmp; cat tmp >> myfile.1
cp myfile.1 tmp; cat tmp >> myfile.1
dd if=/dev/urandom of=myfile.2 bs=1024 count=10
cp myfile.2 tmp; cat tmp >> myfile.2
cp myfile.2 tmp; cat tmp >> myfile.2
cp myfile.2 tmp; cat tmp >> myfile.2
cp myfile.2 tmp; cat tmp >> myfile.2
cat myfile.1 >> myfile.2
bsdiff myfile.1 myfile.2 diff
gzip -c myfile.1 > myfile.1.gz
gzip -c myfile.2 > myfile.2.gz
bsdiff myfile.1.gz myfile.2.gz gz.diff
rm tmp
ls -l
-rw-r--r-- 1 root root 17115 2011-04-05 10:54 diff
-rw-r--r-- 1 root root 21580 2011-04-05 10:54 gz.diff
-rw-r--r-- 1 root root 163840 2011-04-05 10:54 myfile.1
-rw-r--r-- 1 root root 11709 2011-04-05 10:54 myfile.1.gz
-rw-r--r-- 1 root root 327680 2011-04-05 10:54 myfile.2
-rw-r--r-- 1 root root 23399 2011-04-05 10:54 myfile.2.gz
Run Code Online (Sandbox Code Playgroud)
请注意,gz.diff
大于diff
- 如果您尝试使用真实文件,我希望差异更大.