summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-09-21 22:42:03 +0000
committerLennart Poettering <lennart@poettering.net>2004-09-21 22:42:03 +0000
commit4a8bdca5491a437d390bc4733de97807259a093d (patch)
tree2c53c93e69a772993a8ae0d043a065af9b1a13ce
parent20cbc75bbbc6ccb21713dc6531b1731ce679804a (diff)
doc update
bump to 0.6 fix --forget history bug git-svn-id: file:///home/lennart/svn/public/syrep/trunk@68 07ea20a6-d2c5-0310-9e02-9ef735347d72
-rw-r--r--configure.ac2
-rw-r--r--doc/README.html.in42
-rw-r--r--src/dbutil.c5
3 files changed, 44 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index 9923cc4..8f11994 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
AC_PREREQ(2.59)
-AC_INIT([syrep],[0.5],[mzflerc (at) 0pointer (dot) de])
+AC_INIT([syrep],[0.6],[mzflerc (at) 0pointer (dot) de])
AC_CONFIG_SRCDIR([src/syrep.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign -Wall])
diff --git a/doc/README.html.in b/doc/README.html.in
index e37dd97..28c71dc 100644
--- a/doc/README.html.in
+++ b/doc/README.html.in
@@ -42,6 +42,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</p>
<h2><a name="news">News</a></h2>
+<div class="news-date">Wed Sep 22 2004: </div> <p class="news-text"><a
+href="@PACKAGE_URL@syrep-0.6.tar.gz">Version 0.6</a> released; Changes
+include: fix an ugly bug which made snapshots where <tt>--forget</tt> was used unusable</p>
+
<div class="news-date">Mon Jul 19 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@syrep-0.5.tar.gz">Version 0.5</a> released; Changes
include: optionally show sizes of file on <tt>--diff</tt>, implement
@@ -85,17 +89,47 @@ hard links. In fact even copies of files are treated as the
same. Currently, <tt>syrep</tt> doesn't synchronize file attributes like
access modes or modification times.</p>
-<p><tt>Syrep</tt> was written to facilitate the synchronization of two
+<p><tt>syrep</tt> was written to facilitate the synchronization of two
large digital music repositories without direct network
connection. Patch files of several gigabytes are common in
this situation.</p>
-<p><tt>Syrep</tt> is able to cope with 64 bit file sizes. (LFS)</p>
+<p><tt>syrep</tt> is able to cope with 64 bit file sizes. (LFS)</p>
-<p><tt>Syrep</tt> is optimized for speed. It may make use of a message digest
+<p><tt>syrep</tt> is optimized for speed. It may make use of a message digest
cache to accelerate the calculation of digests of a whole directory
hierarchy.</p>
+<h3>How does syrep compare with <tt>rsync</tt>, <tt>cvs</tt>, Subversion, <tt>arch</tt>/<tt>tla</tt>, BitKeeper, <tt>xdelta2</tt>, <tt>diff</tt>/<tt>patch</tt>?</h3>
+
+<p><tt>syrep</tt> is kind of a bidirectional <tt>rsync</tt>, but
+stores and makes use of a file hierarchy history. Synchronization with
+<tt>syrep</tt> is based on patch files, and doesn't require a direct
+connection between the synchronizing peers.</p>
+
+<p><tt>syrep</tt> has many things in common with version control
+systems like <tt>CVS</tt> or <tt>SVN</tt>: it stores a history and has operations
+similar to <tt>update</tt> and <tt>commit</tt>. However: the history doesn't contain
+file contents and is not line based, it stores the MD5 digest and some
+meta data only. There is no central server, instead all peers have the
+same role. There is no distinction between repositories and
+checkouts. In fact checkout and repository are identical.</p>
+
+<p><tt>syrep</tt> has even more things in common with <tt>arch</tt>/<tt>tla</tt> and
+BitKeeper. All three are patch based and are "peer-to-peer". However,
+there are certain differences: <tt>syrep</tt> doesn't differentiate
+between repositories and checkouts. <tt>syrep</tt> doesn't keep a file
+contents history of any kind.</p>
+
+<p><tt>syrep</tt> resembles <tt>diff</tt>/<tt>patch</tt> or
+<tt>xdelta2</tt> in some way. While the latter work on file
+contents, <tt>syrep</tt> works on file hierarchies.</p>
+
+<p>In contrast two most of the software mentioned above,
+<tt>syrep</tt> is capable of synchronizing repositories of several
+100GB of size, with only a very small overhead. (i.e. 4 MB of control
+data for half a year history for 100 GB of user data)</p>
+
<h2><a name="status">Status</a></h2>
<p>Version @PACKAGE_VERSION@ is more or less stable and fulfills its purpose.</p>
@@ -242,7 +276,7 @@ L. Peter Deutsch. Thanks to him for this.</p>
<hr/>
-<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, July 2004</address>
+<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, September 2004</address>
<div class="grey"><i>$Id$</i></div>
diff --git a/src/dbutil.c b/src/dbutil.c
index 09c092d..b13f244 100644
--- a/src/dbutil.c
+++ b/src/dbutil.c
@@ -189,6 +189,11 @@ uint32_t get_version_timestamp(struct syrep_db_context *c, uint32_t v) {
key.size = sizeof(version);
if ((ret = c->db_version_timestamp->get(c->db_version_timestamp, NULL, &key, &data, 0))) {
+
+ /* If the specific history entry was lost: return the epoch */
+ if (ret == DB_NOTFOUND)
+ return 0;
+
c->db_version_timestamp->err(c->db_version_timestamp, ret, "version_timestamp::get");
return (uint32_t) -1;
}