Recent changes to this wiki:
State the obvious: if you GPG-encrypt your backups, don't rely on that same backup to back up your GPG key.
diff --git a/obnam/tutorial.mdwn b/obnam/tutorial.mdwn index 03b4c1f..087f5f9 100644 --- a/obnam/tutorial.mdwn +++ b/obnam/tutorial.mdwn @@ -128,6 +128,14 @@ or configure the passphrase. After this, Obnam will automatically encrypt and decrypt data. +Note that if you encrypt your backups, you'll want to back up your GPG +key in some other way. You can't restore any files from the obnam +backup without it, so you can't rely on the same obnam backup to back up +the GPG key itself. Back up your passphrase-encrypted GPG key somewhere +else, and make sure you have a passphrase strong enough to stand up to +offline brute-force attacks. Remember that if you lose access to your +GPG key, your entire backup becomes useless. + If you enable encryption after making backups, you need to start over with a new repository. You can't mix encrypted and unencrypted backups in the same repository.
Add link to Linus's git commit message opinion
diff --git a/links.mdwn b/links.mdwn index ef86b53..f3a472c 100644 --- a/links.mdwn +++ b/links.mdwn @@ -143,6 +143,7 @@ incarnation of that web page. [cil](http://github.com/andychilton/cil) [openclipart](http://openclipart.org/) [ReST](http://wiki.python.org/moin/ReStructuredText) +[Linus on commit messages](https://github.com/torvalds/subsurface/blob/master/README#L161) **Design:** [Color schemes](http://colorschemedesigner.com/)
Added a comment: Another tool: fslint
diff --git a/dupfiles/comment_6_40a59f333d0f590dba975d8c64d7ae16._comment b/dupfiles/comment_6_40a59f333d0f590dba975d8c64d7ae16._comment new file mode 100644 index 0000000..c8a3450 --- /dev/null +++ b/dupfiles/comment_6_40a59f333d0f590dba975d8c64d7ae16._comment @@ -0,0 +1,9 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmSYZQ2gKgLuluk90B3dBOL8dQc-g-CKKY" + nickname="Steve" + subject="Another tool: fslint" + date="2012-01-21T18:33:47Z" + content=""" +Since this blog is collecting duplicate finding tools: I tried a few and chose fslint; it provides a GUI that lets you look at the dupes and decide whether to delete, symlink, or leave them alone. + +"""]]
Update CoverageTestRunner to 1.8.
diff --git a/coverage-test-runner/NEWS.mdwn b/coverage-test-runner/NEWS.mdwn index cf0cde4..2d8d2e1 100644 --- a/coverage-test-runner/NEWS.mdwn +++ b/coverage-test-runner/NEWS.mdwn @@ -1,6 +1,28 @@ NEWS about CoverageTestRunner ============================= +Version 1.8, released 2012-01-19 +-------------------------------- + +* Progress reporting is now disabled when output does not go to a terminal. + This will make build logs prettier. +* `logging` output is now disabled when unit tests are run. This means that + individual projects no longer need to hide the output themselves. + +Version 1.7.1, released 2011-09-04 +-------------------------------- + +* Bug fix: normalize all relevant paths, when checking for ignored modules. + +Version 1.7, released 2011-09-04 +-------------------------------- + +* When running "python -m CoverageTestRunner", user may now specify a list + of directories to scan for tests, rather than always scanning the current + working directory. +* Pathnames in the file specified with `--ignore-missing-from=FILE` are + now normalized, so that the user does not need to specify `./setup.py` + and can say `setup.py` instead. Version 1.6, released 2011-06-03 --------------------------------
obnam bug report
diff --git a/obnam/bugs/do-not-cross-bind-mounts.mdwn b/obnam/bugs/do-not-cross-bind-mounts.mdwn new file mode 100644 index 0000000..166cd92 --- /dev/null +++ b/obnam/bugs/do-not-cross-bind-mounts.mdwn @@ -0,0 +1,3 @@ +When --one-file-system is used, it would be nice to not cross +bind-mounts. No idea how to figure that out, but it must be +possible. --liw
update cliapp docs for new release
diff --git a/cliapp/NEWS.mdwn b/cliapp/NEWS.mdwn
index bfd08cb..e7e4016 100644
--- a/cliapp/NEWS.mdwn
+++ b/cliapp/NEWS.mdwn
@@ -1,6 +1,29 @@
NEWS for cliapp
===============
+
+Version 0.24, released 2012-01-14
+---------------------------------
+
+* Show the subcommand synopsis in --help output.
+* Bug fix: setting a boolean setting to false in a configuration file now
+ works. Thanks to Richard Maw for the bug report.
+
+Version 0.23, released 2011-12-18
+---------------------------------
+
+* Back off from using the `logging.NullHandler` class, since that exists
+ only in Python 2.7, and we want to support 2.6 too.
+
+Version 0.22, released 2011-12-03
+---------------------------------
+
+* The `runcmd` and `runcmd_unchecked` methods have had an API change: the
+ `stdin` argument is now called `feed_stdin`. This is so that callers may
+ use `stdin` to control how the `subprocess.Popen` module sets up the
+ child program's standard input.
+* Syslog support has been added. Use `--log=syslog`.
+
Version 0.21, released 2011-10-02
---------------------------------
diff --git a/cliapp/cliapp.5.txt b/cliapp/cliapp.5.txt
index 734b7cc..8ad4ec8 100644
--- a/cliapp/cliapp.5.txt
+++ b/cliapp/cliapp.5.txt
@@ -14,17 +14,17 @@ DESCRIPTION
Configuration file variables and command line options are handled by
cliapp under a uniform abstraction: every setting is available both in
- configuration files and command line options. There are a few set‐
+ configuration files and command line options. There are a few set-
tings, provided by the framework itself, which are only available on
- the command line. For example, --help outputs a short help text, list‐
- ing all the available options, and --dump-config outputs a list of cur‐
+ the command line. For example, --help outputs a short help text, list-
+ ing all the available options, and --dump-config outputs a list of cur-
rent configuration settings.
Command line parsing follows GNU conventions: short options start with
a single dash, long options with two dashes, and options may be used
anywhere on the command line. The order of options versus non-options
does not matter. The exception is some of the options provided by the
- framework, which are executed immediately when found, and may be pre‐
+ framework, which are executed immediately when found, and may be pre-
vent the rest of the options from being parsed. (--dump-config is one
of these, so use it at the end of the command line only.)
@@ -49,10 +49,10 @@ DESCRIPTION
String list settings
Some settings may be a list of values (each value being a string). For
- example, there might be a setting for patterns to search for, and mul‐
+ example, there might be a setting for patterns to search for, and mul-
tiple patterns are allowed. On the command line, that happens by using
the option multiple times. In the configuration file, all values are
- given on one line, separated by commas. This is a non-standard exten‐
+ given on one line, separated by commas. This is a non-standard exten-
sion to the INI file syntax. There is no way to escape commas.
Example:
add link
diff --git a/obnam.mdwn b/obnam.mdwn index e29861e..2461ef7 100644 --- a/obnam.mdwn +++ b/obnam.mdwn @@ -45,4 +45,4 @@ Links ----- * [Cache Directory Caching Standard](http://www.bford.info/cachedir/) - +* [Backup bouncer](http://www.n8gray.org/blog/2007/04/27/introducing-backup-bouncer/)
report obnam bug
diff --git a/obnam/bugs/symlink-as-root.mdwn b/obnam/bugs/symlink-as-root.mdwn new file mode 100644 index 0000000..9e0728f --- /dev/null +++ b/obnam/bugs/symlink-as-root.mdwn @@ -0,0 +1,3 @@ +Obnam follows a symlink as the backup root, when backing up, but does +not let you restore the target of the symlink. It should not follow +the symlink when it is root, for consistency. --liw
remove now-useless local.css file
diff --git a/local.css b/local.css deleted file mode 100644 index 79a8bf6..0000000 --- a/local.css +++ /dev/null @@ -1 +0,0 @@ -@import "http://files.liw.fi/ikiwiki-theme/local.css";
Added a comment: "Freedom is also the most important thing.."
diff --git a/linux20/comment_31_53c1eee07d7bd48183bada724f3fa2b7._comment b/linux20/comment_31_53c1eee07d7bd48183bada724f3fa2b7._comment new file mode 100644 index 0000000..864b306 --- /dev/null +++ b/linux20/comment_31_53c1eee07d7bd48183bada724f3fa2b7._comment @@ -0,0 +1,11 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnx6SKc7QCRWMYuACDATn6n6fQChbfe28I" + nickname="droog" + subject=""Freedom is also the most important thing.."" + date="2012-01-05T19:15:10Z" + content=""" +I could not agree more. I am starting to have a huge problem with the current state of \"Personal Computing\". Between iPads, \"Smart\" Phones and Win 7, the forced dumbing down of the user is well under way. I am somewhat embarrassed to admit that I have yet to commit to Linux as my primary OS, but my recent forced migration to Win 7 is making the effort that it would take look more acceptable all the time. I have a sinking feeling that in ten years time, if nothing is done to reverse the trend, 99% of people that use Computing devices will not be allowed access to the root of their drives without breaking some sort of law. The trend toward hand-holding OS's is gaining strength, and I sometimes can't believe the naive and downright ignorant comments that get posted on boards when people have the nerve to simply complain about the castration of Explorer in Win 7. I know Win 7 is a dirty word to this community, and well deserved, but unfortunately some of us are forced to use it for work so it's a valid subject. +Anyway, I love the tone of your article, and remember my early PC days with fondness. Drunk and Stupid. Been there, got the T-shirt. Too bad I was more into other tech stuff or I would not have so far to go to catch up to a 20 yr old revolution. +Cheers Brother. +(The Iceman's back in F1 in 2012 BTW, should be fun..) +"""]]
compression-methods
diff --git a/obnam/bugs/compression-methods.mdwn b/obnam/bugs/compression-methods.mdwn new file mode 100644 index 0000000..ee513c4 --- /dev/null +++ b/obnam/bugs/compression-methods.mdwn @@ -0,0 +1,5 @@ +Supporting multiple compression methods would be nice. + +Also one idea is to allow using one compression method (or no compression) while actually doing the backup, and then have a separate tool, to be run on otherwise idle time, recompress the data using some other, slower algorithm to conserve disk space without making the backup process slower. + +-- SLi
add link to development page for obnam
diff --git a/obnam.mdwn b/obnam.mdwn index ee0917e..e29861e 100644 --- a/obnam.mdwn +++ b/obnam.mdwn @@ -39,6 +39,7 @@ Documentation * [[obnam-benchmark manual page|obnam-benchmark.1.txt]] * [[Roadmap for 1.0|roadmap-for-1.0]] * [[FAQ]] +* [[Development]] stuff Links -----
fix markup
diff --git a/obnam/bugs/gpg-passphrase.mdwn b/obnam/bugs/gpg-passphrase.mdwn index 8c9e5d6..6fcaf88 100644 --- a/obnam/bugs/gpg-passphrase.mdwn +++ b/obnam/bugs/gpg-passphrase.mdwn @@ -11,7 +11,7 @@ key, since there's no way to give obnam a passphrase in that case, without storing it in the crontab or a config file, and then it's no better than not having a passphrase. -See [Debian bug -#649769](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649769). +See [Debian +bug #649769](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649769). --liw
add obnam bug
diff --git a/obnam/bugs/gpg-passphrase.mdwn b/obnam/bugs/gpg-passphrase.mdwn new file mode 100644 index 0000000..8c9e5d6 --- /dev/null +++ b/obnam/bugs/gpg-passphrase.mdwn @@ -0,0 +1,17 @@ +Obnam should, optionally, ask for a gpg passphrase, for the key specified +with --encrypt-with, so that a user without a gpg agent will be able to +do encrypted backups. Obnam should read the passphrase if its +ask-passphrase setting is true, and it has access to a terminal. +It should not have a setting for the passphrase itself, just for +reading it from a terminal (just so that people who don't know +better don't put their passphrase in a config file or similar). + +Those running obnam from cron will need to have a passphraseless +key, since there's no way to give obnam a passphrase in that case, +without storing it in the crontab or a config file, and then it's +no better than not having a passphrase. + +See [Debian bug +#649769](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649769). + +--liw
add cliapp bug about pipeline support
diff --git a/cliapp/bugs/pipelines.mdwn b/cliapp/bugs/pipelines.mdwn new file mode 100644 index 0000000..98282b0 --- /dev/null +++ b/cliapp/bugs/pipelines.mdwn @@ -0,0 +1,10 @@ +cliapp should run pipelines with the runcmd methods: + + self.runcmd(['echo', 'foo'], ['wc', '-c']) + +This gets a little tricky when the caller wants to feed a lot of data +to the pipeline, since that can block. The implementation then needs +to do some looping around select to feed data only when possible, and +to read stdout/stderr output when available. + +--liw
add obnam bug
diff --git a/obnam/bugs/disk-full.mdwn b/obnam/bugs/disk-full.mdwn new file mode 100644 index 0000000..a6a9777 --- /dev/null +++ b/obnam/bugs/disk-full.mdwn @@ -0,0 +1,9 @@ +How does Obnam deal with a full disk for the repository? + +- create a disk image of suitable size and create an ext4 fs on it +- mount the disk image and use it as a repository +- backup something bigger than what will fit into the disk image +- how does obnam handle the error? + +--liw +
add cmdtest bug
diff --git a/cmdtest/bugs/save-temporary-data.mdwn b/cmdtest/bugs/save-temporary-data.mdwn new file mode 100644 index 0000000..0fe1116 --- /dev/null +++ b/cmdtest/bugs/save-temporary-data.mdwn @@ -0,0 +1,2 @@ +cmdtest should be able to save temporary data (`$DATADIR`) if a test +fails, so that it can be usefully debugged by the user. --liw
add cmdtest bug about being verbose
diff --git a/cmdtest/bugs/verbose.mdwn b/cmdtest/bugs/verbose.mdwn new file mode 100644 index 0000000..495ee21 --- /dev/null +++ b/cmdtest/bugs/verbose.mdwn @@ -0,0 +1,2 @@ +cmdtest should report the name of the test it is running, and should have +a --verbose option to print out the name of each command it runs. --liw
add cmdtest bug tracking and some bugs
diff --git a/cmdtest/bugs.mdwn b/cmdtest/bugs.mdwn new file mode 100644 index 0000000..73067a4 --- /dev/null +++ b/cmdtest/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in cmdtest +================== + +[[!inline pages="page(cmdtest/bugs/*) and + !cmdtest/bugs/*/* and + !cmdtest/bugs/done and + !link(cmdtest/bugs/done)" + show=0]] + diff --git a/cmdtest/bugs/coverage.mdwn b/cmdtest/bugs/coverage.mdwn new file mode 100644 index 0000000..769a54b --- /dev/null +++ b/cmdtest/bugs/coverage.mdwn @@ -0,0 +1 @@ +cmdtest does not have a good test suite for itself. --liw diff --git a/cmdtest/bugs/done.mdwn b/cmdtest/bugs/done.mdwn new file mode 100644 index 0000000..c44c5f5 --- /dev/null +++ b/cmdtest/bugs/done.mdwn @@ -0,0 +1,11 @@ +Closed bugs for cmdtest +===================== + +[[!inline pages="page(cmdtest/bugs/*) and + !cmdtest/bugs/*/* and + !cmdtest/bugs/done and + link(cmdtest/bugs/done)" + show=0 + sort=mtime + archive=yes]] + diff --git a/cmdtest/bugs/run-individual-tests.mdwn b/cmdtest/bugs/run-individual-tests.mdwn new file mode 100644 index 0000000..8795a05 --- /dev/null +++ b/cmdtest/bugs/run-individual-tests.mdwn @@ -0,0 +1 @@ +Running individual tests seems to be broken currently. --liw diff --git a/cmdtest/bugs/time-stats.mdwn b/cmdtest/bugs/time-stats.mdwn new file mode 100644 index 0000000..2b627f1 --- /dev/null +++ b/cmdtest/bugs/time-stats.mdwn @@ -0,0 +1,3 @@ +cmdtest should time each script it runs, and optionally be able to show +the timings at the end of the backup run. This would make it easier to +make sure tests are run fast. --liw
add link
diff --git a/gratis-content.mdwn b/gratis-content.mdwn index 57827b4..183e67b 100644 --- a/gratis-content.mdwn +++ b/gratis-content.mdwn @@ -12,6 +12,7 @@ or e-mail me at liw@liw.fi. Thanks. * [Baen CD compilations](http://baencd.thefifthimperium.com/) * [Bookstacks](http://bookstacks.org/) * [Feedbooks](http://www.feedbooks.com/) +* [Lesley Mitchell's Kindle page](http://personal.geah.org/kindle.html) * [MobileRead's Free eBooks page](http://wiki.mobileread.com/wiki/Free_eBooks) * [Project Gutenberg](http://www.gutenberg.org/wiki/Main_Page) * [Projekti Lönnrot](http://www.lonnrot.net/) (in Finnish)
add my name to the front page
diff --git a/index.mdwn b/index.mdwn
index a553bcf..3fbcc91 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -7,11 +7,10 @@
alt="Photo by Soile Mottisenkangas"
class="floatTR" />
-Welcome to my corner of cyberspace, where I display those parts of my
+Hello. I am Lars Wirzenius.
+Welcome to my little corner of cyberspace, where I display those parts of my
persona that I wish the public to see.
-See my [[CV|cv]].
-
This site is implemented as a [[!wikipedia Wiki]], using
[ikiwiki](http://ikiwiki.info).
You may edit any page, but please use the discussion page for each
add obnam bug
diff --git a/obnam/bugs/tarball-with-everything.mdwn b/obnam/bugs/tarball-with-everything.mdwn new file mode 100644 index 0000000..991b8a9 --- /dev/null +++ b/obnam/bugs/tarball-with-everything.mdwn @@ -0,0 +1,17 @@ +From Chris: + +> python2.6 is available in epel, so it should be simple. I've hit the +> "In order to install package foo, you need package bar". +> +> I'm sure this is a simple thing to do if I actually read the +> instructions, but for those of us who can't be bothered, a single +> tarball that just worked would be nice. +> +> Ideally one that could install in my homespace for testing purposes. + +From liw: + +I think that might be workable. It's almost all pure Python, +and can be run directly from the source directories, so a tarball +with all the source projects included, plus a little script to set +up PATH and PYTHONPATH would work.
add obnam faq entry
diff --git a/obnam/faq.mdwn b/obnam/faq.mdwn index a2666e7..0fb9e7b 100644 --- a/obnam/faq.mdwn +++ b/obnam/faq.mdwn @@ -21,3 +21,9 @@ too many Google hits. After much trying, we failed to come up with anything good. However, without a name, you can't even start the project, because what will you call its source directory? So we chose the OBligatory NAMe. + +How do I restore on another computer? +------------------------------------- + +Use `--client-name` and set it to the name of the computer that made +the original backup.
mark bug done
diff --git a/obnam/bugs/precise-checkpoints.mdwn b/obnam/bugs/precise-checkpoints.mdwn index f33a68b..be6623d 100644 --- a/obnam/bugs/precise-checkpoints.mdwn +++ b/obnam/bugs/precise-checkpoints.mdwn @@ -2,3 +2,4 @@ Obnam should do checkpoint generations at precise times, not just between files; this will result in partial files, but that's ok, the next backup run will continue from the partial file. --liw +[[done]]
mark unreproducible bug closed
diff --git a/obnam/bugs/ro-ops-while-rw-runs-crash.mdwn b/obnam/bugs/ro-ops-while-rw-runs-crash.mdwn
index b46bc98..50f76d4 100644
--- a/obnam/bugs/ro-ops-while-rw-runs-crash.mdwn
+++ b/obnam/bugs/ro-ops-while-rw-runs-crash.mdwn
@@ -3,3 +3,7 @@
<weasel> probably should say 'repository locked', if it cannot provide the
information if work is in progress
+I wasn't able to reproduce this, at least not yet. I'll close this until
+there's a traceback or recipe for reproducing. --liw
+
+[[done]]
mark bug done
diff --git a/obnam/bugs/specify-ssh-key.mdwn b/obnam/bugs/specify-ssh-key.mdwn index b43356d..05932af 100644 --- a/obnam/bugs/specify-ssh-key.mdwn +++ b/obnam/bugs/specify-ssh-key.mdwn @@ -3,3 +3,5 @@ Cf. `ssh -i` option. --liw At the moment, obnam only uses ssh agent for authentication. That should be fixed. --liw + +[[done]]
mark bug done
diff --git a/obnam/bugs/integer-too-big.mdwn b/obnam/bugs/integer-too-big.mdwn index 2a337e2..9162ad5 100644 --- a/obnam/bugs/integer-too-big.mdwn +++ b/obnam/bugs/integer-too-big.mdwn @@ -28,3 +28,9 @@ Fix "long too large to convert to int" problem found by Jo. --liw + +Can't seem to reproduce this, but it was hopefully related to things +now replaced by our own lstat wrapper. If you see this, re-open and +add a way to reproduce. --liw + +[[done]]
add new bug
diff --git a/summain/bugs/xattr-support.mdwn b/summain/bugs/xattr-support.mdwn new file mode 100644 index 0000000..6d04977 --- /dev/null +++ b/summain/bugs/xattr-support.mdwn @@ -0,0 +1 @@ +Summain should support xattrs. --liw
mark bug done
diff --git a/summain/bugs/proper-timestamps.mdwn b/summain/bugs/proper-timestamps.mdwn index 476fa1a..6e3df13 100644 --- a/summain/bugs/proper-timestamps.mdwn +++ b/summain/bugs/proper-timestamps.mdwn @@ -1,3 +1,5 @@ Summain should use nanosecond precision for timestamps. This will require a C extension instead of Python's os.lstat. --liw + +[[done]]
mark bug done
diff --git a/obnam/bugs/fsck-workitem-unification.mdwn b/obnam/bugs/fsck-workitem-unification.mdwn index 354c210..259aeda 100644 --- a/obnam/bugs/fsck-workitem-unification.mdwn +++ b/obnam/bugs/fsck-workitem-unification.mdwn @@ -2,3 +2,4 @@ Combine larch and obnam fsck workitems. Merge the two current WorkItem classes, put them into larch, and adapt both code bases accordingly. --liw +[[done]]
remove obsolete contacts for obnam
diff --git a/obnam/contact.mdwn b/obnam/contact.mdwn index 489ae8d..0439db8 100644 --- a/obnam/contact.mdwn +++ b/obnam/contact.mdwn @@ -1,13 +1,11 @@ Contact ------- -* Mailing list: mail obnam-help@braawi.org for instructions. - * [Archive](http://lists.liw.fi/obnam@braawi.org/threads.html) - * [Gname](nntp://news.gmane.org/gmane.comp.sysutils.backup.obnam) -* [Obnam on identi.ca](http://identi.ca/liw/tag/obnam) * `#obnam` on `irc.oftc.net` for IRC discussions about Obnam * [Lars's blog posts about Obnam](http://blog.liw.fi/tag/obnam/) and [btree](http://blog.liw.fi/tag/btree/). * Also, [Lars's private journal entries](http://liw.fi/obnam/journal-dump/) about obnam and btree. +* If all else fails, [[/contact]] gives contact information for Lars. +(Sorry, no mailing list anymore.)
mark one bug fixed, open related new bug
diff --git a/obnam/bugs/document-repo-upgrade.mdwn b/obnam/bugs/document-repo-upgrade.mdwn index 7b1643f..345b8b5 100644 --- a/obnam/bugs/document-repo-upgrade.mdwn +++ b/obnam/bugs/document-repo-upgrade.mdwn @@ -6,4 +6,4 @@ Better yet, make a way to upgrade, of course. --liw - +[[done]] (see [[repo-upgrades-missing]] diff --git a/obnam/bugs/repo-upgrades-missing.mdwn b/obnam/bugs/repo-upgrades-missing.mdwn new file mode 100644 index 0000000..6888de3 --- /dev/null +++ b/obnam/bugs/repo-upgrades-missing.mdwn @@ -0,0 +1,2 @@ +Obnam needs to be able to upgrade a repository to the current format +version. --liw
mark bug fixed
diff --git a/obnam/bugs/generation-time-stamps-wrong.mdwn b/obnam/bugs/generation-time-stamps-wrong.mdwn index 6fdcfcb..ab9199d 100644 --- a/obnam/bugs/generation-time-stamps-wrong.mdwn +++ b/obnam/bugs/generation-time-stamps-wrong.mdwn @@ -5,3 +5,5 @@ From Anders Wirzenius: The timestamps are clearly wrong. It's as if Obnam is storing a zero for the timestamps (zero UTC would be 02:00 Finnish time). --liw + +[[done]]
add link
diff --git a/links.mdwn b/links.mdwn index ec41ab7..ef86b53 100644 --- a/links.mdwn +++ b/links.mdwn @@ -157,6 +157,7 @@ incarnation of that web page. [iwantmyname](http://iwantmyname.com/) [OpenWRT/TL-WRT1043ND](http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd) [restricted ssh keys](http://www.thegibson.org/blog/archives/572) +[qemu 9p](http://wiki.qemu.org/Documentation/9psetup) **Security:** [libgfshare](http://www.digital-scurf.org/software/libgfshare)
add link
diff --git a/links.mdwn b/links.mdwn index 2b21226..ec41ab7 100644 --- a/links.mdwn +++ b/links.mdwn @@ -156,6 +156,7 @@ incarnation of that web page. [self-signed certs](http://sial.org/howto/openssl/self-signed/) [iwantmyname](http://iwantmyname.com/) [OpenWRT/TL-WRT1043ND](http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd) +[restricted ssh keys](http://www.thegibson.org/blog/archives/572) **Security:** [libgfshare](http://www.digital-scurf.org/software/libgfshare)
move from liw.fi
diff --git a/vi.mdwn b/vi.mdwn new file mode 100644 index 0000000..85701c2 --- /dev/null +++ b/vi.mdwn @@ -0,0 +1,26 @@ +[[!meta title="How to get out of vi"]] +[[!tag article]] + + +For some inexplicable reason people often have trouble +getting out of `vi`, the venerable and +mighty UNIX editor. Given that the `vi` +user interface is logical, and therefore easy to learn, +this manual should be unnecessary. The world, however, +is not what it should be. + +22 September 2002. + +If you want to exit and save what is in the buffer, the command +sequence is: + +> Control-Q Control-C ESC Z Z + +If you want to exit, but do not want to save what is in the buffer, +the command sequence is: + +> Control-Q Control-C ESC : q ! ENTER + +Feel free to refer amnesiac `vi` users to this +page. Hopefully it will convert them to the elegance and simplicity of +the editor.
move from liw.fi
diff --git a/longest-living-bug.mdwn b/longest-living-bug.mdwn new file mode 100644 index 0000000..6e27660 --- /dev/null +++ b/longest-living-bug.mdwn @@ -0,0 +1,57 @@ +[[!meta title="Longest-living bug in Linux"]] +[[!tag article]] + + +The story of how I goofed up and nobody noticed +for years. + +7 May 1997 + +In the spring and summer of 1991, my friend Linus was playing +around with this OS-like program, which later became Linux. He +wanted a `printf` like service inside the kernel, +but didn't know how to implement it, though (he didn't know C +thoroughly back then). So I wrote him an `sprintf` clone, +and he used that, after some modifications. + +In September of 1994, Friedemann Baitinger at IBM, who was +developing a device driver for another operating system, used +my `sprintf` clone as a debugging aid (but not in the +final product). The bug lived for three or three and a half +years before anyone found it. Worse, the bug was immediately +obvious as soon as one tried to use the function in a certain, +common way. No-one had done that, ever, not even I when I wrote +it. Don't ever hire me to write code that is expected to work. + + +The bug was in the handling of a field width given via the argument +list. With `sprintf`, to print a string, for example, +you would write + + sprintf(buf, "%s", str); + +This would put the `str' string into `buf'. `sprintf` +allows formatting of the output: + + sprintf(buf, "%10s", str); + +This would make the output string at least 10 characters wide +(wider, if `str' is wider). The field width can be a constant, +or it can be given as a separate argument: + + sprintf(buf, "%*s", 10, str); + +This gives the same output as before, but triggered my bug. + + +My `sprintf` was implemented with a loop that walked +through the format string and incremented an index when it +processed various parts of the format string. Except that when +it processed the `*', it didn't increment. Oops. + + +So why do I explain this so thoroughly? My weird sense of +humor made me put ``Author of the longest-living Linux bug'' +in the CREDITS file in the kernel sources, and people sometimes +ask me about it. I figured I'd answer it once, and point people +at this web page.
move from liw.fi
diff --git a/debian-lessons-2000.mdwn b/debian-lessons-2000.mdwn new file mode 100644 index 0000000..3745cd3 --- /dev/null +++ b/debian-lessons-2000.mdwn @@ -0,0 +1,143 @@ +[[!meta title="Debian Lessons"]] +[[!tag article]] + + +Project management lessons from the Debian project. + +23 July 2000 + +This text lists the important things I think the Debian development +community has learned about project management in the course of developing +the Debian GNU/Linux system. These are my personal +opinions, not those of the project or other developers. I hope this +list will be useful to Debian, other Linux distributions, and other +free software projects. + +Thanks to the people on Debian's IRC channel for feedback since the +first private drafts. Thanks to Mark Brown for pointing out IRC versus +mailing list for communication between developers. + + +**Make sure things scale up.** +Problems are always simpler when the project is small. When the number of +developers and packages grows a lot, small problems become big problems. + + +Make things distributed so that things can be worked on in parallel. + + +**Make sure the foundation is good.** +Debian has a pretty good package management system (even though it has +lots of minor flaws and warts). This makes it much easier to build the +system, when one can concentrate on making packages better, instead of +having to fight the base system. + + +**Document important things.** +When people need to work together, they need to know how to take each +other in consideration. There needs to be rules about how packages +are laid out so that they don't interfere with each other. If these +rules aren't written down, they need to be remembered by the community +memory and word of mouth, both of which are unreliable. +The Debian Policy documents are a fine example of this. Debian couldn't +live without it. + + +(Note that when documenting things it's important to document the +reasons behind the decisions as well. Debian Policy documents don't +do this well enough, though, at the moment.) + + +**Automate repetitive tasks when possible.** +Repetitive tasks should be automated, especially if they are tricky or +critical. This reduces the number of human errors, and also frees up +developers to more important tasks. + + +Debian examples include dinstall (moves uploaded packages into the +ftp server), lintian (checks for many errors that are easy to make), +and the various autocompiling projects for porting efforts. They're +all absolutely necessary for Debian for maintaining high levels of +quality. + + +**Avoid single points of failure, especially for +volunteers.** Volunteers will always lack time at the critical +point. For critical jobs, have several people share the workload and make +sure there are mechanisms for checking that things are going smoothly. + + +**Do not worry about time tables; keep goals +realistic.** In big volunteer projects, time tables will +always slip. That is not a catastrophy, and it must be tolerated, +but there should still be some effort in keeping them. Goals must be +kept realistic. + +**Make it easy to work independently.** +The more interdependencies things have, the more communication is needed +(read: less time spent on productive hacking) and the bigger the chance +that a single developer or package will cause big problems. + + +**Do not overload developers.** +Developers are volunteers with too little free time. Make as few +requirements on their time as possible. For example, do not require that +they follow high-volume mailing lists. Overloaded developers have a +tendency to disappear, or at least their packages will be of lower quality +or less up-to-date than they might be. Also do not let developers overload +themselves by trying to do too much, and make it easy (culturally and +technically) to give up packages, when the workload gets too high. + + +**Be open and keep things in public.** +If you're popular, your users will want to know what is going on. Do not +decide things behind closed doors. Allow everyone to read the discussions +leading to decisions and, preferably, allow everyone to participate in +them, even if they aren't developers. Developers may need a private +forum as well, but it should be used as little as possible. By doing +things in private, you are hiding your motives and other people will +be assuming the worst and react accordingly. + + +This applies within the project and between developers or groups of +developers as well. When things are decided that affect more developers +than those involved in a particular discussion, the discussion must be +held in a forum that all developers can participate it. For example, IRC +is not good enough, since not everyone will be present at any given time. +It's OK to start a discussion on IRC, but before any decisions are made, +it should be taken to, say, a mailing list. + +**Make it easy to contribute.** +There's never too many developers, so make it natural and easy for people +to join in and help with what they can, even if it is just reporting bugs. +Debian has recruited several hundred developers this way, and manages to +have thousands of packages. Many developers only have one package, but +it tends to be one they need themselves, so they're motivated to keep +it working. + + +**Have leadership.** +There must be some way to solve conflicts and arguments, if a natural +consensus doesn't occur. Different projects may need different kinds of +leadership, but there has to be some way, formal or informal. + + +**Conflicts are natural, but mustn't get out of hand.** +Developers are often opinionated, strong-minded, and bullheaded. +You can't avoid that. They must be allowed to scream at each other +every now and then, but fights must not be allowed to escalate. +Everyone in the project will have to be responsible for mediating +between disagreeing parties, if they can't come to a consensus +by themselves. Unfinished fights will easily haunt the project. + + +Developers do not have to like each other, but they do have to +get along. + + +**Use a bug tracking system.** An open bug tracking +system makes it harder for bugs to be forgotten when developers are too +busy, or leave the project, or lose their disks. It also lets people +see whether they want to use a package before installing it, and to +find solutions or workarounds for bugs that are already known but not +yet fixed. diff --git a/debian-lessons.mdwn b/debian-lessons.mdwn new file mode 100644 index 0000000..d747365 --- /dev/null +++ b/debian-lessons.mdwn @@ -0,0 +1,252 @@ +[[!meta title="Debian Lessons"]] +[[!tag article]] + + +Project management lessons from the Debian project. + +5 September 2004 + +This text lists the important things I think the Debian development +community has learned about project management in the course of developing +the Debian GNU/Linux system. These are my personal +opinions, not those of the project or other developers. I hope this +list will be useful to Debian, other Linux distributions, and other +free software projects. + + +This is the second version of this text. The +[[first_one|debian-lessons-2000]] was written in +the year 2000. + +Thanks to the people on Debian's IRC channel for feedback since the +first private drafts. Thanks to Mark Brown for pointing out IRC versus +mailing list for communication between developers. + + + + +**Make sure things scale up.** +Problems are always simpler when the project is small. When the number of +developers and packages grows a lot, small problems become big problems. +Make things distributed so that things can be worked on in parallel. + + + + +**Make sure the foundation is good.** +Debian has a pretty good package management system (even though it has +lots of minor flaws and warts). This makes it much easier to build the +system, when one can concentrate on making packages better, instead of +having to fight the base system. + + + + +**Document important things.** (Diff truncated)
add "Advocating Linux" article from liw.iki.fi
diff --git a/advocating-linux.mdwn b/advocating-linux.mdwn new file mode 100644 index 0000000..2995dbc --- /dev/null +++ b/advocating-linux.mdwn @@ -0,0 +1,107 @@ +[[!meta title="Advocating Linux"]] +[[!tag article]] + + +Some advice to people who wish to advocate Linux. Especially to those +who want to criticise other operating systems in the process. + +16 August 1996 + +Linux is my operating system of choice. I want to have many people use +it, if only because then it has a higher chance of surviving. Many +people want the same thing, and some of them are actively telling +about Linux to other people, often in public newsgroups. This is advocacy, +and it's one good way to spread the word on Linux. + +Unfortunately, some of these people seem to suffer from what has +been called the Amiga syndrome: whenever anyone discusses computers, the +stereotypical Amiga user will always claim that the Amiga is a better, +faster, cheaper, more user-friendly computer than any other, ever, and +any opposing view is treated as treachery, oppression, and a declaration +of nuclear war. Some Linux users are using the same tactics. +They make both themselves and Linux look bad. I'd like to stop this by +making a few suggestions for advocating Linux better. + +There's no enforcement of these suggestions, nor will there be (the +mere idea is horrible). Linux users are supposed to have brains. If you +don't think I'm making sense, fine. One of us might consider the other +an idiot, but that's life. + +*Stay calm.* There's no reason to get excited. If someone says something +about Linux that you don't like, so what? It's just computers, it's not +important. + +*Don't take it personally.* Even if Linux is your +dream system, there's no reason to be offended if someone points out +problems with Linux (even if you wrote that part of Linux, which you +probably didn't). It's not a statement about you personally. If they +flame Linux users, they're idiots and you should ignore them. +They're probably just trying to get some attention. + +*Ignore flame baits.* Like I said, +some people just want attention. They enjoy starting long flame wars +by crossposting something insulting to several unrelated groups +(e.g., both to Windows and Linux groups). Don't respond to these +posts. It isn't productive. + +*Stick to facts.* If someone says something wrong about +Linux, reply with the correct facts. Make sure they're facts, though, +not just something you heard about. Don't spread lies or rumors. Check +your facts. If you don't know how to do that, then perhaps you shouldn't +take part in the discussion, except perhaps by making questions. Even +better, give references so that other people can also check the +facts. + +*Linux is not flawless.* Linux has bugs, including design +problems. If someone points out something that is wrong with Linux, +acknowledge it and do something constructive, like forward it to the +proper maintainer or fix it yourself. Find a workaround. +Write a summary of the problem and make it publically available. +Don't just whine. + +*Don't flame other systems.* Perhaps Windows does +crash more often than Linux (although I have no hard data on this, +just anecdotes, so I don't know if it is true; remember, facts only). +That doesn't mean you tell it to every Windows user. If you must +say something about other systems, keep to facts (and make doubly sure +they're facts) and present them politely. + +*Don't flame people because they use other systems.* Ever. + +*Bill Gates is not Satan.* Some people claim that +Microsoft's business practices are immoral (or at least overly +predatory). I don't know if this is true, but using such claims as +arguments does not make the discussion productive. Conspiracy theories +sound really, really silly (as long as they're theories; feel free to +provide verified facts). + +*We aren't taking over the world.* There's no reason +to get offended if someone claims many more people use Windows than Linux. +It's true. It doesn't matter. No-one knows how many Linux users there +are. That doesn't matter, either. Market share isn't the goal. +Solving problems is the goal. Having fun is the goal. + +*Linux can't replace Windows.* Windows has applications that Linux +lacks. There's no reason to get excited about it. Windows can't replace +Linux, either. No system is perfect for all things. Don't make yourself +look ridiculous by claiming that LaTeX is a better wordprocessor for the +masses than MS Word. If you want Linux to have better applications than +Windows, write them or encourage others with something better than talk. + +*Avoid crossposts.* Many advocacy discussions live long +because they're crossposted to many popular groups for specific systems. +Whenever someone says something about one system, there's a whole bunch +of people who will jump on him, just because he's supporting a system +different from their's. If you must crosspost advocacy discussions, only +crosspost to advocacy groups (such as comp.os.linux.advocacy). Never, +ever crosspost to other groups, it ruins them. If you respond to an +advocacy thread that is crossposted to a non-advocacy group, remove the +non-advocacy group. + +*Keep to the Linux groups.* Don't go to non-Linux +groups to pick a fight. Each advocacy group exists for discussion about +one particular system. Don't try to invade other advocacy groups. That's +rude. No-one likes big-mouthed strangers. + +*See also:* [What Byte wrote about Linux users in Februrary, +1996](http://www.byte.com/art/9602/sec11/art8.htm).
update obnam 1.0 roadmap with current status
diff --git a/obnam/roadmap-for-1.0.mdwn b/obnam/roadmap-for-1.0.mdwn
index 75f93fd..8fac1ae 100644
--- a/obnam/roadmap-for-1.0.mdwn
+++ b/obnam/roadmap-for-1.0.mdwn
@@ -166,7 +166,7 @@ That's not all that important for 1.0, however.
TODO:
-* Fix Obnam bug about files changing or going missing.
+* Fix Obnam bug about files changing or going missing. (**done now**)
- develop a test framework to inject such errors systematically
during test runs, perhaps by having a wrapper around the Obnam VFS
layer: allow N operations, then remove a file
@@ -176,7 +176,7 @@ TODO:
must be possible for the remaining data. Fsck must be able to notice
missing files, and report what is still recoverable. Any chunk file
must merely result in a hole in the restored file. Missing B-tree
- nodes must still allow other (reachable) nodes to be used.
+ nodes must still allow other (reachable) nodes to be used. (**done now**)
- develop test that removes chunks and checks that restores work
otherwise
- develop test that removes B-tree nodes and verifies that files
@@ -189,7 +189,7 @@ Performance
For Obnam to be usable for me, I would need to be able to do a full
backup of my laptop, to a brand new backup repository, overnight.
In numbers: 250 gigabytes of data, in both large and small files,
-in 12 hours. Using encryption. Over SFTP.
+in 12 hours. Using encryption. Over SFTP to localhost.
I should further need to be able to run a daily incremental backup
in less than an hour. Say, up to ten gigabytes of data.
add link
diff --git a/links.mdwn b/links.mdwn index 6c24ce4..2b21226 100644 --- a/links.mdwn +++ b/links.mdwn @@ -180,6 +180,7 @@ incarnation of that web page. [ColorHug](http://www.hughski.com/) [Stalybridge Photographic Club](http://www.stalybridgephoto.org.uk/) [redeye](http://redeye.org.uk/) +[Calumet](http://www.calumetphoto.co.uk/) **Offices:** [Stefan Didak's home office](http://www.stefandidak.com/office/)
add obnam bug
diff --git a/obnam/bugs/generation-time-stamps-wrong.mdwn b/obnam/bugs/generation-time-stamps-wrong.mdwn new file mode 100644 index 0000000..6fdcfcb --- /dev/null +++ b/obnam/bugs/generation-time-stamps-wrong.mdwn @@ -0,0 +1,7 @@ +From Anders Wirzenius: + + Generation 8 (1970-01-01 02:00:00 - 1970-01-01 02:00:00) <------ + ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ + +The timestamps are clearly wrong. It's as if Obnam is storing a zero +for the timestamps (zero UTC would be 02:00 Finnish time). --liw
add specification for verification test
diff --git a/obnam/roadmap-for-1.0.mdwn b/obnam/roadmap-for-1.0.mdwn index f5a2424..75f93fd 100644 --- a/obnam/roadmap-for-1.0.mdwn +++ b/obnam/roadmap-for-1.0.mdwn @@ -119,21 +119,18 @@ The best way to guard against bugs in the backup system is to verify that it works, before relying on it. So, I would need to do at least the following, before relying on Obnam: -* make a full backup of all files -* make incremental daily backups, for several days +* make a full backup of all files, and a Summain manifest of the files + - the filesystem shall be idle, so that nothing changes during the backup + and Summain runs +* make incremental daily backups, for several days, after actively using + the system + - ditto manifest, and ditto idle * restore every backup, and verify that all data is restored correctly - -There are various ways of implementing this, such as keeping -snapshots of the data on, say, USB hard disks, and comparing those -with the restored data. One can also use tools such as -[summain](http://liw.fi/summain/). For these things to work, the -filesystem will need to be frozen while the backup and snapshot -happen, but that is doable, during the test period. + - use the manifests to verify TODO: * Design and implement a verification test. - - should, by preference, be done in a way that is easy for anyone to do * Execute the verification test, make note of problems. * Fix any problems found. * Repeat until it goes flawlessly.
remove unnecessary test from obnam locking spec
Upon review, it does not seem to provide anything new compared to the
first test.
Upon review, it does not seem to provide anything new compared to the
first test.
diff --git a/obnam/locking.mdwn b/obnam/locking.mdwn index e20bd49..8f7cd72 100644 --- a/obnam/locking.mdwn +++ b/obnam/locking.mdwn @@ -148,10 +148,3 @@ been backed up. Also, repository wide fsck will be run. The amount of data to back up in each generation shall vary for each client, so that they are less likely to get into lockstep. - -Another test will be to write a script that creates a lock file, -increments a counter in a file, and then releases the lock, and -repeates this some number of times, and then running many concurrent -copies of this script. The counter must have the correct value at -the end. -
update Obnam tutorial wrt encryption, other tweaks
diff --git a/obnam/tutorial.mdwn b/obnam/tutorial.mdwn
index d93fedd..03b4c1f 100644
--- a/obnam/tutorial.mdwn
+++ b/obnam/tutorial.mdwn
@@ -3,8 +3,9 @@
Installation
------------
-It is easiest to install Obnam on a Debian system. Add the following
-line to your `/etc/apt/sources.list` file:
+It is easiest to install Obnam on a Debian system. If you're running
+Debian `wheezy` or a later release, Obnam is included. For `squeeze`
+add the following line to your `/etc/apt/sources.list` file:
deb http://code.liw.fi/debian squeeze main
@@ -15,8 +16,7 @@ Then run the following commands as root:
The commands will complain that the PGP key used to sign the archive
is not known to apt. You can either ignore this, or add the key from
-<http://code.liw.fi/apt.asc> to your key. This will become unnecessary
-once Obnam has been uploaded to Debian.
+<http://code.liw.fi/apt.asc> to your key.
For other systems, you need to install from sources. See the `README`
file for instructions.
@@ -40,7 +40,7 @@ Initial backup
Your first backup will be pretty big, and will take a long time.
A long backup may crash, but that is not a problem: Obnam makes
-a **checkpoint** every gigabyte or so.
+a **checkpoint** every one hundred megabytes or so.
obnam backup $HOME
@@ -111,5 +111,34 @@ This will output the contents of the backup generation, in a format
similar to `ls -lAR`. Save it into a file and browse that.
(It's a fairly slow command, so it's comfortable to save to a file.)
+Using encryption
+----------------
+
+Obnam can use the GnuPG program to encrypt the backup. To enable
+this, you need to have or create a PGP key, and then configure
+Obnam to use it:
+
+ [config]
+ encrypt-with = CAFEBABE
+
+Here, `CAFEBABE` is the **key identifier** for your key,
+as reported by GnuPG. You need to have `gpg-agent` or equivalent
+software configured, for now, because Obnam has no way to ask for
+or configure the passphrase.
+
+After this, Obnam will automatically encrypt and decrypt data.
+
+If you enable encryption after making backups, you need to start over
+with a new repository.
+You can't mix encrypted and unencrypted backups in the same repository.
+
+(There are a bunch of Obnam commands for administering encryption.
+You won't need them, unless you share the same repository with several
+machines. In that case, you should read the manual page.)
+
+The End
+-------
+
Best of luck.
+See [[status]] for ways to get support, should you need anything.
file bug
diff --git a/obnam/bugs/document-repo-upgrade.mdwn b/obnam/bugs/document-repo-upgrade.mdwn new file mode 100644 index 0000000..7b1643f --- /dev/null +++ b/obnam/bugs/document-repo-upgrade.mdwn @@ -0,0 +1,9 @@ +Although there is currently no repository upgrade method, +the manpage should at least document that you need to start +over from scratch. + +Better yet, make a way to upgrade, of course. + +--liw + +
mark bug done
diff --git a/obnam/bugs/crash_when_started_without_--log_option.mdwn b/obnam/bugs/crash_when_started_without_--log_option.mdwn index 875fdb3..cbccc5d 100644 --- a/obnam/bugs/crash_when_started_without_--log_option.mdwn +++ b/obnam/bugs/crash_when_started_without_--log_option.mdwn @@ -21,3 +21,5 @@ This is actually a bug in cliapp 0.22, which switched to using `logging.NullHandler`. That only exists in Python 2.7, and you're using 2.6. Workaround: `obnam --log=/dev/null`. I'll release a new cliapp soon, it's already fixed in bzr. --liw + +[[done]]
obnam 0.24 release
diff --git a/obnam/NEWS.mdwn b/obnam/NEWS.mdwn
index 4d09e65..e655819 100644
--- a/obnam/NEWS.mdwn
+++ b/obnam/NEWS.mdwn
@@ -4,6 +4,50 @@ Obnam NEWS
This file summarizes changes between releases of Obnam.
+Version 0.24, released 2011-12-18; a BETA release
+-------------------------------------------------
+
+USER VISIBLE CHANGES
+
+* The way file timestamps (modification and access times) have changed,
+ to fix inaccuracies introduced by the old way. Times are now stored
+ as two integers giving full seconds and nanoseconds past the full
+ second, instead of the weird earlier system that was imposed by Python's
+ use of floating point for the timestamps. This causes the repository
+ format version to be bumped, resulting in a need to start over with an
+ empty repository.
+* Extended file attributes are now backed up from and restored to local
+ filesystems. They are neither backed up, nor restored for live data
+ accessed over SFTP.
+* If the `--exclude` regular expression is wrong, Obnam now gives an
+ error message and then ignores the regexp, rather than crashing.
+* There is now a compression plugin, enabled with `--compress-with=gzip`.
+* De-duplication mode can now be chosen by the user: the new
+ `--deduplicate` setting can be one of `never` (fast, but uses more space);
+ `verify` (slow, but handles hash collisions gracefully); and
+ `fatalist` (fast, but lossy, if there is a hash collision). `fatalist`
+ is the default mode.
+* Restores now obey the `--dry-run` option. Thanks to Peter Palfreder for
+ the bug report.
+* New option `--verify-randomly` allows you to check only a part of the
+ backup, instead of everything.
+* Verify now has some progress reporting.
+* Forget is now much faster.
+* Forget now has progress reporting. It is not fast enough to do without,
+ sorry.
+* Backup now removes any checkpoint generations it created during a backup
+ run, if it succeeds without errors.
+
+BUG FIXES:
+
+* Now works with a repository on sshfs. Thanks to Dafydd Harries for
+ reporting the problem.
+* Now depends on a newer version of the larch library, fixing a problem
+ when the Obnam default node size changes and an existing repository
+ has a different size.
+* User and group names for sftp live data are no longer queried from the
+ local system. Instead, they're marked as unknown.
+
Version 0.23, released 2011-10-02; a BETA release
-------------------------------------------------
diff --git a/obnam/obnam-benchmark.1.txt b/obnam/obnam-benchmark.1.txt
index df926c5..89d5899 100644
--- a/obnam/obnam-benchmark.1.txt
+++ b/obnam/obnam-benchmark.1.txt
@@ -1,4 +1,4 @@
-OBNAM-BENCHMARK(1) OBNAM-BENCHMARK(1)
+OBNAM-BENCHMARK(1) OBNAM-BENCHMARK(1)
@@ -6,43 +6,28 @@ NAME
obnam-benchmark - benchmark obnam
SYNOPSIS
- obnam-benchmark [--config=FILE] [--description=DESCRIPTION]
- [--dump-config] [--dump-memory-profile=METHOD] [--dump-setting-names]
- [--generate-manpage=TEMPLATE] [--generations=N] [-h] [--help]
- [--larch-branch=DIR] [--list-config-files] [--log=FILE] [--log-keep=N]
- [--log-level=LEVEL] [--log-max=SIZE] [--no-default-configs]
- [--obnam-branch=DIR] [--output=FILE] [--results=DIR]
- [--seivot-branch=DIR] [--sftp-delay=SFTP-DELAY] [--size=PAIR]
- [--use-existing=DIR] [--use-sftp-repository] [--use-sftp-root]
- [--verify] [--version] [--wiki=DIR] [--with-encryption] [FILE]...
+ obnam-benchmark [--config=FILE] [--description=DESCRIPTION] [--dump-config] [--dump-memory-profile=METHOD] [--dump-setting-names]
+ [--generate-manpage=TEMPLATE] [--generations=N] [-h] [--help] [--larch-branch=DIR] [--list-config-files] [--log=FILE] [--log-keep=N]
+ [--log-level=LEVEL] [--log-max=SIZE] [--no-default-configs] [--obnam-branch=DIR] [--output=FILE] [--results=DIR] [--seivot-branch=DIR]
+ [--sftp-delay=SFTP-DELAY] [--size=PAIR] [--use-existing=DIR] [--use-sftp-repository] [--use-sftp-root] [--verify] [--version] [--wiki=DIR]
+ [--with-encryption] [FILE]...
DESCRIPTION
- obnam-benchmark benchmarks the obnam(1) backup application, by measur‐
- ing how much time it takes to do a backup, restore, etc, in various
- scenarios. obnam-benchmark uses the seivot(1) tool for actually run‐
- ning the benchmarks, but makes some helpful assumptions about things,
- to make it simpler to run than running seivot directly.
-
- Benchmarks are run using two different usage profiles: mailspool (all
- files are small), and mediaserver (all files are big). For each pro‐
- file, test data of the desired total size is generated, backed up, and
- then several incremental generations are backed up, each adding some
- more generated test data. Then other operations are run against the
- backup repository: restoring, listing the contents of, and removing
- each generation.
-
- The result of the benchmark is a .seivot file per profile, plus a
- Python profiler file for each run of obnam. These are stored in
- ../benchmarks. A set of .seivot files can be summarized for comparison
- with seivots-summary(1). The profiling files can be viewed with the
- usual Python tools: see the pstats module.
-
- The benchmarks are run against a version of obnam checked out from ver‐
- sion control. It is not (currently) possible to run the benchmark
- against an installed version of obnam. Also the larch Python library,
- which obnam needs, needs to be checked out from version control. The
- --obnam-branch and --larch-branch options set the locations, if the de‐
- faults are not correct.
+ obnam-benchmark benchmarks the obnam(1) backup application, by measuring how much time it takes to do a backup, restore, etc, in various scenar‐
+ ios. obnam-benchmark uses the seivot(1) tool for actually running the benchmarks, but makes some helpful assumptions about things, to make it
+ simpler to run than running seivot directly.
+
+ Benchmarks are run using two different usage profiles: mailspool (all files are small), and mediaserver (all files are big). For each profile,
+ test data of the desired total size is generated, backed up, and then several incremental generations are backed up, each adding some more gener‐
+ ated test data. Then other operations are run against the backup repository: restoring, listing the contents of, and removing each generation.
+
+ The result of the benchmark is a .seivot file per profile, plus a Python profiler file for each run of obnam. These are stored in ../benchmarks.
+ A set of .seivot files can be summarized for comparison with seivots-summary(1). The profiling files can be viewed with the usual Python tools:
+ see the pstats module.
+
+ The benchmarks are run against a version of obnam checked out from version control. It is not (currently) possible to run the benchmark against
+ an installed version of obnam. Also the larch Python library, which obnam needs, needs to be checked out from version control. The --ob‐
+ nam-branch and --larch-branch options set the locations, if the defaults are not correct.
OPTIONS
--config=FILE
@@ -55,8 +40,7 @@ OPTIONS
write out the entire current configuration
--dump-memory-profile=METHOD
- make memory profiling dumps using METHOD, which is one of: none,
- simple, meliae, or heapy (default: simple)
+ make memory profiling dumps using METHOD, which is one of: none, simple, meliae, or heapy (default: simple)
--dump-setting-names
write out all names of settings and quit
@@ -71,21 +55,19 @@ OPTIONS
show this help message and exit
--larch-branch=DIR
- use DIR as the larch branch (default: /home/liw/larch/trunk)
+ use DIR as the larch branch (default: /root/larch/trunk)
--list-config-files
list all possible config files
--log=FILE
- write log entries to FILE (default is to not write log files at
- all)
+ write log entries to FILE (default is to not write log files at all); use "syslog" to log to system log
--log-keep=N
keep last N logs (10)
--log-level=LEVEL
- log at LEVEL, one of debug, info, warning, error, critical, fa‐
- tal (default: debug)
+ log at LEVEL, one of debug, info, warning, error, critical, fatal (default: debug)
--log-max=SIZE
rotate logs larger than SIZE, zero for never (default: 0)
@@ -115,12 +97,10 @@ OPTIONS
use existing DIR for initial generation
--use-sftp-repository
- access the repository over SFTP (requires ssh to localhost to
- work)
+ access the repository over SFTP (requires ssh to localhost to work)
--use-sftp-root
- access the live data over SFTP (requires ssh to localhost to
- work)
+ access the live data over SFTP (requires ssh to localhost to work)
--verify
verify restores
@@ -129,23 +109,19 @@ OPTIONS
show program's version number and exit
--wiki=DIR
- use DIR as the wiki branch (default: /home/liw/braawi.org)
+ use DIR as the wiki branch (default: /root/braawi.org)
--with-encryption
run benchmark using encryption
ENVIRONMENT
- TMPDIR This variable must be set. It controls where the temporary
- files (generated test data) is stored. If this variable was not
- set, they'd be put into /tmp, which easily fills up, to the
- detriment of the entire system. Thus. obnam-benchmark requires
- that the location is set explicitly. (You can still use /tmp if
- you want, but you have to set TMPDIR explicitly.)
+ TMPDIR This variable must be set. It controls where the temporary files (generated test data) is stored. If this variable was not set, they'd
+ be put into /tmp, which easily fills up, to the detriment of the entire system. Thus. obnam-benchmark requires that the location is set
+ explicitly. (You can still use /tmp if you want, but you have to set TMPDIR explicitly.)
(Diff truncated)
add link
diff --git a/links.mdwn b/links.mdwn index 8708852..6c24ce4 100644 --- a/links.mdwn +++ b/links.mdwn @@ -28,6 +28,7 @@ incarnation of that web page. [Debugging Rules](http://www.debuggingrules.com/) [Producing OSS](http://www.producingoss.com/) [DAM](http://thedambook.com/) +[useful Kindle info](http://personal.geah.org/kindle.html) **Debian:** [debian.org](http://www.debian.org/)
remove unnecessary link
diff --git a/links.mdwn b/links.mdwn index 2d345fa..8708852 100644 --- a/links.mdwn +++ b/links.mdwn @@ -34,7 +34,6 @@ incarnation of that web page. [KVM](http://wiki.debian.org/KVM) [pkg-perl](http://wiki.debian.org/Teams/DebianPerlGroup/) [liw@liw](http://qa.debian.org/developer.php?login=liw@liw.fi&comaint=yes) -[lars@catalyst](http://qa.debian.org/developer.php?login=lars%40catalyst.net.nz&comaint=yes) [Freedom Box](http://wiki.debian.org/FreedomBox) [Freedom Box at Alioth](https://alioth.debian.org/projects/freedombox/) [DEP5](http://dep.debian.net/deps/dep5)
mark bug done
diff --git a/obnam/bugs/username-groupname-over-sftp-wrong.mdwn b/obnam/bugs/username-groupname-over-sftp-wrong.mdwn index 1d07eb2..452d428 100644 --- a/obnam/bugs/username-groupname-over-sftp-wrong.mdwn +++ b/obnam/bugs/username-groupname-over-sftp-wrong.mdwn @@ -7,3 +7,5 @@ at all. --liw Fixing this is going to require an obnam server mode, where the remote side is also running obnam, and we can query that for stuff. But then SFTP as a whole will be unnecessary. --liw + +[[done]]
mark bug done
diff --git a/obnam/bugs/remove-checkpoint-generations.mdwn b/obnam/bugs/remove-checkpoint-generations.mdwn index f30f368..7037a1b 100644 --- a/obnam/bugs/remove-checkpoint-generations.mdwn +++ b/obnam/bugs/remove-checkpoint-generations.mdwn @@ -7,3 +7,8 @@ but eventually it should be done. --liw + +forget is now slow, so added code to remove checkpoints made during +a backup run, if it is successful. --liw + +[[done]]
mark bug done
diff --git a/obnam/bugs/benchmark-fsck.mdwn b/obnam/bugs/benchmark-fsck.mdwn index dec50e8..05b96d4 100644 --- a/obnam/bugs/benchmark-fsck.mdwn +++ b/obnam/bugs/benchmark-fsck.mdwn @@ -1 +1,5 @@ `obnam-benchmark` should benchmark also the fsck operation. --liw + +next version of [[/seivot]] will do this. --liw + +[[done]]
really close bug
diff --git a/obnam/bugs/test-against-old-format-versions.mdwn b/obnam/bugs/test-against-old-format-versions.mdwn index da7c73b..aedd086 100644 --- a/obnam/bugs/test-against-old-format-versions.mdwn +++ b/obnam/bugs/test-against-old-format-versions.mdwn @@ -4,3 +4,5 @@ proper way might be. --liw The current tests already verify that the format version is correct, and that's all I want to support right now. --liw + +[[done]]
mark bug closed
diff --git a/obnam/bugs/test-against-old-format-versions.mdwn b/obnam/bugs/test-against-old-format-versions.mdwn index 4c1b9a8..da7c73b 100644 --- a/obnam/bugs/test-against-old-format-versions.mdwn +++ b/obnam/bugs/test-against-old-format-versions.mdwn @@ -1,3 +1,6 @@ The test suite should verify that Obnam works in the proper way when it encounters a repository with the old format version. Whatever that proper way might be. --liw + +The current tests already verify that the format version is correct, +and that's all I want to support right now. --liw
comment on bug
diff --git a/obnam/bugs/crash_when_started_without_--log_option.mdwn b/obnam/bugs/crash_when_started_without_--log_option.mdwn
index 649f025..875fdb3 100644
--- a/obnam/bugs/crash_when_started_without_--log_option.mdwn
+++ b/obnam/bugs/crash_when_started_without_--log_option.mdwn
@@ -16,3 +16,8 @@ obnam 0.23 crashes when started without --log option. Here is what it spits out
AttributeError: 'module' object has no attribute 'NullHandler'
-- weinzwang
+
+This is actually a bug in cliapp 0.22, which switched to using
+`logging.NullHandler`. That only exists in Python 2.7, and you're
+using 2.6. Workaround: `obnam --log=/dev/null`. I'll release a new
+cliapp soon, it's already fixed in bzr. --liw
set done bug feed sorting to mtime for everything
diff --git a/cliapp/bugs/done.mdwn b/cliapp/bugs/done.mdwn
index ea6c54d..3b06631 100644
--- a/cliapp/bugs/done.mdwn
+++ b/cliapp/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for cliapp
!cliapp/bugs/done and
link(cliapp/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/coverage-test-runner/bugs/done.mdwn b/coverage-test-runner/bugs/done.mdwn
index dea4afe..79684a0 100644
--- a/coverage-test-runner/bugs/done.mdwn
+++ b/coverage-test-runner/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for coverage-test-runner
!coverage-test-runner/bugs/done and
link(coverage-test-runner/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/dupfiles/bugs/done.mdwn b/dupfiles/bugs/done.mdwn
index 9311dfe..9116aca 100644
--- a/dupfiles/bugs/done.mdwn
+++ b/dupfiles/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for dupfiles
!dupfiles/bugs/done and
link(dupfiles/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/extrautils/bugs/done.mdwn b/extrautils/bugs/done.mdwn
index 4b5c5a7..79d21b4 100644
--- a/extrautils/bugs/done.mdwn
+++ b/extrautils/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for extrautils
!extrautils/bugs/done and
link(extrautils/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/genbackupdata/bugs/done.mdwn b/genbackupdata/bugs/done.mdwn
index 1109fc0..593c632 100644
--- a/genbackupdata/bugs/done.mdwn
+++ b/genbackupdata/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for genbackupdata
!genbackupdata/bugs/done and
link(genbackupdata/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/larch/bugs/done.mdwn b/larch/bugs/done.mdwn
index 2801310..15aa041 100644
--- a/larch/bugs/done.mdwn
+++ b/larch/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for larch
!larch/bugs/done and
link(larch/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/seivot/bugs/done.mdwn b/seivot/bugs/done.mdwn
index 60073ce..5b74dce 100644
--- a/seivot/bugs/done.mdwn
+++ b/seivot/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for seivot
!seivot/bugs/done and
link(seivot/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/summain/bugs/done.mdwn b/summain/bugs/done.mdwn
index 31c5355..04fc549 100644
--- a/summain/bugs/done.mdwn
+++ b/summain/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for summain
!summain/bugs/done and
link(summain/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/tracing/bugs/done.mdwn b/tracing/bugs/done.mdwn
index 9b55e71..11d69ba 100644
--- a/tracing/bugs/done.mdwn
+++ b/tracing/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for tracing
!tracing/bugs/done and
link(tracing/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
diff --git a/ttystatus/bugs/done.mdwn b/ttystatus/bugs/done.mdwn
index dfa2c7d..6149a64 100644
--- a/ttystatus/bugs/done.mdwn
+++ b/ttystatus/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for ttystatus
!ttystatus/bugs/done and
link(ttystatus/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
change done sort order
diff --git a/obnam/bugs/done.mdwn b/obnam/bugs/done.mdwn
index 28503c4..6fa70a6 100644
--- a/obnam/bugs/done.mdwn
+++ b/obnam/bugs/done.mdwn
@@ -6,5 +6,6 @@ Closed bugs for Obnam
!obnam/bugs/done and
link(obnam/bugs/done)"
show=0
+ sort=mtime
archive=yes]]
close fixed bug
diff --git a/obnam/bugs/use-existing-node-size.mdwn b/obnam/bugs/use-existing-node-size.mdwn index 0fd3deb..1c6b241 100644 --- a/obnam/bugs/use-existing-node-size.mdwn +++ b/obnam/bugs/use-existing-node-size.mdwn @@ -4,3 +4,4 @@ It might log a warning message about it, but failing work is not acceptable. +[[done]]
mark bug closed
diff --git a/obnam/bugs/missing-progress-reporting.mdwn b/obnam/bugs/missing-progress-reporting.mdwn index 14262ae..5979b17 100644 --- a/obnam/bugs/missing-progress-reporting.mdwn +++ b/obnam/bugs/missing-progress-reporting.mdwn @@ -12,3 +12,7 @@ forget and verify need it. --liw verify now has progress reporting. forget still needs it. --liw + +forget now has progress reporting too. --liw + +[[done]]
mark bug done
diff --git a/obnam/bugs/restore-timestamp-trouble.mdwn b/obnam/bugs/restore-timestamp-trouble.mdwn index e58de86..2a70a16 100644 --- a/obnam/bugs/restore-timestamp-trouble.mdwn +++ b/obnam/bugs/restore-timestamp-trouble.mdwn @@ -2,3 +2,5 @@ Why does restore verification fail with small timestamp differences when seivot runs summain with mtime enabled? --liw +[[done]] thanks to avoiding `os.lstat` and using our own lstat(2) +wrapper.
close fixed bug
diff --git a/obnam/bugs/forget-is-too-slow.mdwn b/obnam/bugs/forget-is-too-slow.mdwn index 2240c10..2b37342 100644 --- a/obnam/bugs/forget-is-too-slow.mdwn +++ b/obnam/bugs/forget-is-too-slow.mdwn @@ -4,3 +4,5 @@ once, rather than generation-by-generation. Needs experimentation and benchmarking. --liw + +[[done]]
close bug
diff --git a/larch/bugs/btree-traces-log-tree.mdwn b/larch/bugs/btree-traces-log-tree.mdwn index 433ca3a..e0d58e3 100644 --- a/larch/bugs/btree-traces-log-tree.mdwn +++ b/larch/bugs/btree-traces-log-tree.mdwn @@ -2,3 +2,5 @@ When the B-tree writes traces, it should log which B-tree it's operating on, too, to help people reading the logs be happier. --liw + +[[done]]
Added a comment: vmdebootstrap vs vmbuilder
diff --git a/vmdebootstrap/comment_2_03a28258c9bd473d79efc1978d0b5d19._comment b/vmdebootstrap/comment_2_03a28258c9bd473d79efc1978d0b5d19._comment new file mode 100644 index 0000000..75b56a6 --- /dev/null +++ b/vmdebootstrap/comment_2_03a28258c9bd473d79efc1978d0b5d19._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://liw.fi/" + nickname="Lars Wirzenius" + subject="vmdebootstrap vs vmbuilder" + date="2011-12-14T08:39:05Z" + content=""" +Note that vmbuilder requires a working VM setup, while vmdebootstrap doesn't (apart from chroot). This makes it possible to run vmdebootstrap on, say, ARM, or inside a VM, without any particular requirements, which is sometimes an important consideration. +"""]]
Added a comment
diff --git a/vmdebootstrap/comment_1_1b66698d057e9f0110c03d32c48bcbc9._comment b/vmdebootstrap/comment_1_1b66698d057e9f0110c03d32c48bcbc9._comment new file mode 100644 index 0000000..54995a4 --- /dev/null +++ b/vmdebootstrap/comment_1_1b66698d057e9f0110c03d32c48bcbc9._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmBhQgaA5QrFwT67-Bo0qPIx0HD9roDrso" + nickname="Paul Anselm" + subject="comment 1" + date="2011-12-14T04:44:57Z" + content=""" +Just in case someone else stumbles upon this site while searching for vm image creation tools: There's also https://code.launchpad.net/vmbuilder which seems to have quite an nice architecture plus a debian plugin available in some branches (https://code.launchpad.net/~bzed/vmbuilder/debian for example). Debian support could use some maintaince... +"""]]
mention new eoc mailng list
diff --git a/eoc.mdwn b/eoc.mdwn
index c9f851f..21f46ea 100644
--- a/eoc.mdwn
+++ b/eoc.mdwn
@@ -11,3 +11,5 @@ The current code is in bzr, you can get it via:
bzr get http://code.liw.fi/enemies-of-carlotta/bzr/trunk/
+I no longer run a mailing list for eoc, but there's a new one:
+`eoc@kivimaa.fi` .
add bug
diff --git a/summain/bugs/proper-timestamps.mdwn b/summain/bugs/proper-timestamps.mdwn new file mode 100644 index 0000000..476fa1a --- /dev/null +++ b/summain/bugs/proper-timestamps.mdwn @@ -0,0 +1,3 @@ +Summain should use nanosecond precision for timestamps. +This will require a C extension instead of Python's os.lstat. +--liw
Wish added
diff --git a/obnam/bugs/time_based_checkpoint_generations.mdwn b/obnam/bugs/time_based_checkpoint_generations.mdwn new file mode 100644 index 0000000..b7144fb --- /dev/null +++ b/obnam/bugs/time_based_checkpoint_generations.mdwn @@ -0,0 +1,7 @@ +obnam should accept SIZE values as well as TIME values for the --checkpoint option. For instance: + + obnam backup $HOME --checkpoint=5min + +This would be very handy for connections which vary a lot in speed and quality. + +-- weinzwang
Bug added
diff --git a/obnam/bugs/crash_when_started_without_--log_option.mdwn b/obnam/bugs/crash_when_started_without_--log_option.mdwn new file mode 100644 index 0000000..649f025 --- /dev/null +++ b/obnam/bugs/crash_when_started_without_--log_option.mdwn @@ -0,0 +1,18 @@ +obnam 0.23 crashes when started without --log option. Here is what it spits out on the console: + + user@host:~$ obnam backup ./ + CRITICAL:root:Traceback (most recent call last): + File "/usr/lib/python2.6/dist-packages/cliapp/app.py", line 132, in _run + self.setup_logging() + File "/usr/lib/python2.6/dist-packages/cliapp/app.py", line 279, in setup_logging + handler = logging.NullHandler() + AttributeError: 'module' object has no attribute 'NullHandler' + + Traceback (most recent call last): + File "/usr/lib/python2.6/dist-packages/cliapp/app.py", line 132, in _run + self.setup_logging() + File "/usr/lib/python2.6/dist-packages/cliapp/app.py", line 279, in setup_logging + handler = logging.NullHandler() + AttributeError: 'module' object has no attribute 'NullHandler' + +-- weinzwang
comment on bug progress
diff --git a/obnam/bugs/missing-progress-reporting.mdwn b/obnam/bugs/missing-progress-reporting.mdwn index 30fa6d0..14262ae 100644 --- a/obnam/bugs/missing-progress-reporting.mdwn +++ b/obnam/bugs/missing-progress-reporting.mdwn @@ -10,3 +10,5 @@ The following operations should have progress reporting added: restore and fsck already have progress reporting. forget and verify need it. --liw + +verify now has progress reporting. forget still needs it. --liw
mark bug closed
diff --git a/obnam/bugs/verify-pick-randomly.mdwn b/obnam/bugs/verify-pick-randomly.mdwn index 95ebf92..89085ea 100644 --- a/obnam/bugs/verify-pick-randomly.mdwn +++ b/obnam/bugs/verify-pick-randomly.mdwn @@ -5,3 +5,5 @@ to pick a desired number of files randomly from the backup and compare those. --liw + +[[done]]
close bug with comments
diff --git a/obnam/bugs/gpg-options.mdwn b/obnam/bugs/gpg-options.mdwn index 1ecc6aa..91cba84 100644 --- a/obnam/bugs/gpg-options.mdwn +++ b/obnam/bugs/gpg-options.mdwn @@ -3,3 +3,9 @@ Obnam should have a `gnupg-home` setting to set the GnuPG home directory any options to GnuPG. --liw +The home directory can be set with `$GNUPGHOME` environment variable. +Additional settings can be set in the config in that directory. An +Obnam setting seems unnecessary, therefore. I'll add it if I am told +of a specific example of why it's useful. --liw + +[[done]]
comment on bug
diff --git a/obnam/bugs/username-groupname-over-sftp-wrong.mdwn b/obnam/bugs/username-groupname-over-sftp-wrong.mdwn index 4f0b423..1d07eb2 100644 --- a/obnam/bugs/username-groupname-over-sftp-wrong.mdwn +++ b/obnam/bugs/username-groupname-over-sftp-wrong.mdwn @@ -3,3 +3,7 @@ queries the _local_ system for the names of the user and group. This is going to result in bad data. In this case, unless it can query the remote server, it should just not store the username and groupname at all. --liw + +Fixing this is going to require an obnam server mode, where the remote +side is also running obnam, and we can query that for stuff. But then +SFTP as a whole will be unnecessary. --liw
creating index page images
diff --git a/images.mdwn b/images.mdwn new file mode 100644 index 0000000..f8317c0 --- /dev/null +++ b/images.mdwn @@ -0,0 +1 @@ +[[!map pages="images/* and ! images/*/*"]]
typo fix
diff --git a/genbackupdata.mdwn b/genbackupdata.mdwn index bd039bf..6b8461b 100644 --- a/genbackupdata.mdwn +++ b/genbackupdata.mdwn @@ -1,4 +1,4 @@ -[!!meta title="genbackupdata - generate backup data for tests, benchmarks"]] +[[!meta title="genbackupdata - generate backup data for tests, benchmarks"]] [[!tag program]] genbackupdata is a program to generate test data for backup software testing.
move obnam and genbackupdata pages from braawi.org here
diff --git a/genbackupdata.mdwn b/genbackupdata.mdwn index 395887d..bd039bf 100644 --- a/genbackupdata.mdwn +++ b/genbackupdata.mdwn @@ -1,6 +1,17 @@ -[[!meta title="genbackupdata"]] +[!!meta title="genbackupdata - generate backup data for tests, benchmarks"]] [[!tag program]] -genbackupdata is a tool for generating test data for backup benchmarking. -The official home page is <http://braawi.org/genbackupdata/>. -This page exists here so that people who know I wrote it can easily find it. +genbackupdata is a program to generate test data for backup software testing. + +* [[README]] +* [[NEWS]] +* [[manpage|genbackupdata.1.txt]] +* [Using stuff on code.liw.fi](http://liw.fi/code/) +* Version control: `bzr get http://code.liw.fi/genbackupdata/bzr/trunk/` +* Tarball and Debian packages: + <http://code.liw.fi/debian/pool/main/g/genbackupdata/> +* [Bugs](http://liw.fi/genbackupdata/bugs/) + +See also: + +* [seivot](http://liw.fi/seivot/) diff --git a/genbackupdata/NEWS.mdwn b/genbackupdata/NEWS.mdwn new file mode 100644 index 0000000..4bede84 --- /dev/null +++ b/genbackupdata/NEWS.mdwn @@ -0,0 +1,21 @@ +NEWS for genbackupdata +====================== + +Version 1.5, released 2011-06-12 +-------------------------------- + +* Fix genbackupdatalib to work better with pydoc. +* Change to use newer cliapp API for adding new settings. This avoids + the deprecated old API. + +Version 1.3.1, released 2011-02-02 +---------------------------------- + +* Fix setup.py so that the genbackupdatalib Python library is + included in the package. + +Version 1.3, released 2011-02-01 +-------------------------------- + +* Rewrite from scratch, becaue the old code was hard to test. + It was also full of features nobody uses. New code is small. diff --git a/genbackupdata/README.mdwn b/genbackupdata/README.mdwn new file mode 100644 index 0000000..2d84a88 --- /dev/null +++ b/genbackupdata/README.mdwn @@ -0,0 +1,43 @@ +genbackupdata +============= + +genbackupdata creates or modifies directory trees in ways that simulate +real filesystems sufficiently well for performance testing of backup +software. For example, it can create files that are a mix of small text +files and big binary files, with the binary files containing random +binary junk which compresses badly. This can then be backed up, and +later the directory tree can be changed by creating new files, modifying +files, or deleting or renaming files. The backup can then be run again. + +The output is deterministic, such that for a given set of parameters the +same output always happens. Thus it is more efficient to distribute +genbackupdata and a set of parameters between people who wish to +benchmark backup software than distributing very large test sets. + +Also included are a couple of benchmark programs I've written to measure +aspects of the work genbackupdata does: + +* binaryjunk.py compares various ways of generating random binary data + +* createfiles.py compares various directory structures when creating + lots of new files + +The home page is: http://braawi.org/genbackupdata/ + +Legalese: + + Copyright (C) 2007-2011 Lars Wirzenius <liw@iki.fi> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/genbackupdata/genbackupdata.1.txt b/genbackupdata/genbackupdata.1.txt new file mode 100644 index 0000000..2d707ca --- /dev/null +++ b/genbackupdata/genbackupdata.1.txt @@ -0,0 +1,125 @@ +GENBACKUPDATA(1) GENBACKUPDATA(1) + + + +NAME + genbackupdata - generate backup test data + +SYNOPSIS + genbackupdata [options] directory + +DESCRIPTION + genbackupdata generates test data sets for performance testing of + backup software. It creates a directory tree filled with files of dif‐ + ferent sizes. The total size and the distribution of sizes between + small and big are configurable. The program can also modify an exist‐ + ing directory tree by creating new files, and deleting, renaming, or + modifying existing files. This can be used to generate test data for + successive generations of backups. + + The program is deterministic: with a given set of parameters (and a + given pre-existing directory tree), it always creates the same output. + This way, it is possible to reproduce backup tests exactly, without + having to distribute the potentially very large test sets. + + The data set consists of plain files and directories. Files are either + small text files or big binary files. Text files contain the "lorem + ipsum" stanza, binary files contain randomly generated byte streams. + The percentage of file data that is small text or big binary files can + be set, as can the sizes of the respective file types. + + Files and directories are named "fileXXXX" or "dirXXXX", where "XXXX" + is a successive integer, separate successions for files and directo‐ + ries. There is an upper limit to how many files a directory may con‐ + tain. After the file limit is reached, a new sub-directory is created. + The first set of files go into the root directory of the test set. + + You have to give one of the options --create, --delete, --rename, or + --modify for the program to do anything. You can, however, give more + than one of them, if DIR already exists. (Giving the same option more + than once means that only the last instance is counted.) (DIR) is cre‐ + ated if it doesn't exist already. + +OPTIONS + When giving file sizes (SIZE below), the default unit is a byte. The + suffixes "K", "M", "G", and "T" (upper or lower) can be used to refer + to kibi-, mebi-, gibi-, and tebibytes, respectively (2 to the power of + 10, 20, 30, or 40). + + When giving file counts (COUNT below), the same suffixes may be used, + but then they will refer to kilo-, mega-, giga-, and tera- (10 to the + power of 3, 6, 9, or 12). + + When referring to a size or file count, when it makes sense to give a + relative size, the suffix "%" may be used to indicate percentage. + + Numbers may be integer or floating point (using the locale's floating + point syntax). + + --seed=SEED + Set the (integer) seed to the psuedo-random number generator. + Default: 0. + + --max-count=COUNT + Set the maximum number of files in a directory. Default: 256. + + -p, --percentage-text-data=PERCENTAGE + Set the percentage of file data (not file count) in newly cre‐ + ated files (not modified files) allocated to small text files. + Default: 10%. + + -t, --text-file-size=SIZE + Set the size of text files. Cannot be a relative size. + Default: 10 KiB. + + -b, --binary-file-size=SIZE + Set the size of binary files. Cannot be a relative size. + Default: 10 MiB. + + -c, --create=SIZE + Create SIZE amount of new files. A relative amount refers to + the size of the pre-existing files. DIR is created if it + doesn't exist already. Default: 0. + + -d, --delete=COUNT + Remove COUNT pre-existing files. A relative amount refers to + the number of pre-existing files. DIR must exist already. + Default: 0. + + -r, --rename=COUNT + Rename COUNT pre-existing files to new names, without changing + the contents. A relative amount refers to the number of pre- + existing files. DIR must exist already. Default: 0. (Diff truncated)
add link
diff --git a/links.mdwn b/links.mdwn index 803a4ed..2d345fa 100644 --- a/links.mdwn +++ b/links.mdwn @@ -179,6 +179,7 @@ incarnation of that web page. [Manchester Photographic](http://www.manchesterphotographic.com/) [ColorHug](http://www.hughski.com/) [Stalybridge Photographic Club](http://www.stalybridgephoto.org.uk/) +[redeye](http://redeye.org.uk/) **Offices:** [Stefan Didak's home office](http://www.stefandidak.com/office/)
remove broken experiment
diff --git a/bugs.mdwn b/bugs.mdwn deleted file mode 100644 index 2cc5629..0000000 --- a/bugs.mdwn +++ /dev/null @@ -1,9 +0,0 @@ -All open bugs -================== - -[[!inline pages="page(*/bugs/*) and - !*/bugs/*/* and - !*/bugs/done and - !link(*/bugs/done)" - show=0]] -
try a list of all open bugs
diff --git a/bugs.mdwn b/bugs.mdwn new file mode 100644 index 0000000..2cc5629 --- /dev/null +++ b/bugs.mdwn @@ -0,0 +1,9 @@ +All open bugs +================== + +[[!inline pages="page(*/bugs/*) and + !*/bugs/*/* and + !*/bugs/done and + !link(*/bugs/done)" + show=0]] +
add ikiwiki bug tracker for tracing
diff --git a/tracing.mdwn b/tracing.mdwn index 8007813..a4afd91 100644 --- a/tracing.mdwn +++ b/tracing.mdwn @@ -26,5 +26,5 @@ See also: * Version control: `bzr get http://code.liw.fi/python-tracing/bzr/trunk/` * Tarball and Debian packages: <http://code.liw.fi/debian/pool/main/p/python-tracing/> -* [Bugs](http://code.liw.fi/python-tracing/bugs/) +* [[Bugs]] * [PyPI](http://pypi.python.org/pypi/tracing/) diff --git a/tracing/bugs.mdwn b/tracing/bugs.mdwn new file mode 100644 index 0000000..2df429f --- /dev/null +++ b/tracing/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in tracing +================== + +[[!inline pages="page(tracing/bugs/*) and + !tracing/bugs/*/* and + !tracing/bugs/done and + !link(tracing/bugs/done)" + show=0]] + diff --git a/tracing/bugs/done.mdwn b/tracing/bugs/done.mdwn new file mode 100644 index 0000000..9b55e71 --- /dev/null +++ b/tracing/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for tracing +===================== + +[[!inline pages="page(tracing/bugs/*) and + !tracing/bugs/*/* and + !tracing/bugs/done and + link(tracing/bugs/done)" + show=0 + archive=yes]] +
add ikiwiki bug tracker for summain
diff --git a/summain.mdwn b/summain.mdwn index 09f063c..d0f69d3 100644 --- a/summain.mdwn +++ b/summain.mdwn @@ -11,7 +11,7 @@ See also: * [[README]] * [[NEWS]] * [[manpage|summain.1.txt]] -* [Bugs](http://code.liw.fi/summain/bugs/) +* [[Bugs]] Downloads: diff --git a/summain/bugs.mdwn b/summain/bugs.mdwn new file mode 100644 index 0000000..48a3a38 --- /dev/null +++ b/summain/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in summain +================== + +[[!inline pages="page(summain/bugs/*) and + !summain/bugs/*/* and + !summain/bugs/done and + !link(summain/bugs/done)" + show=0]] + diff --git a/summain/bugs/done.mdwn b/summain/bugs/done.mdwn new file mode 100644 index 0000000..31c5355 --- /dev/null +++ b/summain/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for summain +===================== + +[[!inline pages="page(summain/bugs/*) and + !summain/bugs/*/* and + !summain/bugs/done and + link(summain/bugs/done)" + show=0 + archive=yes]] +
add ikiwiki bug tracker for seivot
diff --git a/seivot.mdwn b/seivot.mdwn index 4630977..0865f90 100644 --- a/seivot.mdwn +++ b/seivot.mdwn @@ -20,4 +20,4 @@ Downloads: * Version control: `bzr get http://code.liw.fi/seivot/bzr/trunk/` * Tarball and Debian packages: <http://code.liw.fi/debian/pool/main/s/seivot/> -* [Bugs](http://code.liw.fi/seivot/bugs/) +* [[Bugs]] diff --git a/seivot/bugs.mdwn b/seivot/bugs.mdwn new file mode 100644 index 0000000..c47b40c --- /dev/null +++ b/seivot/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in seivot +================== + +[[!inline pages="page(seivot/bugs/*) and + !seivot/bugs/*/* and + !seivot/bugs/done and + !link(seivot/bugs/done)" + show=0]] + diff --git a/seivot/bugs/done.mdwn b/seivot/bugs/done.mdwn new file mode 100644 index 0000000..60073ce --- /dev/null +++ b/seivot/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for seivot +===================== + +[[!inline pages="page(seivot/bugs/*) and + !seivot/bugs/*/* and + !seivot/bugs/done and + link(seivot/bugs/done)" + show=0 + archive=yes]] +
mark LRU un-used/developed by me
diff --git a/lru.mdwn b/lru.mdwn index 7302285..3f0f78e 100644 --- a/lru.mdwn +++ b/lru.mdwn @@ -1,6 +1,11 @@ [[!meta title="Least-recently-used cache in Python"]] [[!tag program]] +**Note:** I've folded in this code into [[larch]], so I no longer use +it myself. I'm leaving it here in case it is of use for someone else. +However, [PyPI](http://pypi.python.org/pypi) already has several LRU +implementations that might be useful to you. + A pure-Python implementation of an [LRU cache](http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used). Basically, it is a mapping of keys to values with a maximum size @@ -18,4 +23,3 @@ Downloads: * Version control: `bzr get http://code.liw.fi/python-lru/bzr/trunk/` * Tarball and Debian packages: <http://code.liw.fi/debian/pool/main/p/python-lru/> -* [Bugs](http://code.liw.fi/python-lru/bugs/)
note that I no longer use fake-gnome-games
diff --git a/fake-gnome-games.mdwn b/fake-gnome-games.mdwn index 1f2ac81..a1ab954 100644 --- a/fake-gnome-games.mdwn +++ b/fake-gnome-games.mdwn @@ -1,5 +1,11 @@ [[!tag program]] +**Note:** Since switching to GNOME 3 and gnome-shell, the games are +no longer in my face all the time, so I am rarely tempted by them. +Thus, I no longer update this package. It works for GNOME 2 in Debian +squeeze, but I don't know if it will work later. If not, and you want +it, please fix. + I find it quite distracting to have games on my laptop. The Debian GNOME packaging is such that it insists on always including the games. To solve this dilemma,
add ikiwiki bug tracker for extrautils
diff --git a/extrautils.mdwn b/extrautils.mdwn index e0e2126..b343c05 100644 --- a/extrautils.mdwn +++ b/extrautils.mdwn @@ -14,4 +14,4 @@ See also: * Version control: `bzr get http://code.liw.fi/extrautils/bzr/trunk/` * Tarball and Debian packages: <http://code.liw.fi/debian/pool/main/e/extrautils/> -* [Bugs](http://code.liw.fi/extrautils/bugs/) +* [[Bugs]] diff --git a/extrautils/bugs.mdwn b/extrautils/bugs.mdwn new file mode 100644 index 0000000..9796495 --- /dev/null +++ b/extrautils/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in extrautils +================== + +[[!inline pages="page(extrautils/bugs/*) and + !extrautils/bugs/*/* and + !extrautils/bugs/done and + !link(extrautils/bugs/done)" + show=0]] + diff --git a/extrautils/bugs/done.mdwn b/extrautils/bugs/done.mdwn new file mode 100644 index 0000000..4b5c5a7 --- /dev/null +++ b/extrautils/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for extrautils +===================== + +[[!inline pages="page(extrautils/bugs/*) and + !extrautils/bugs/*/* and + !extrautils/bugs/done and + link(extrautils/bugs/done)" + show=0 + archive=yes]] +
add missing stuff to dupfiles bug tracker
diff --git a/dupfiles/bugs/done.mdwn b/dupfiles/bugs/done.mdwn new file mode 100644 index 0000000..9311dfe --- /dev/null +++ b/dupfiles/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for dupfiles +===================== + +[[!inline pages="page(dupfiles/bugs/*) and + !dupfiles/bugs/*/* and + !dupfiles/bugs/done and + link(dupfiles/bugs/done)" + show=0 + archive=yes]] +
add ikiwiki bug tracker for dupfiles
diff --git a/dupfiles.mdwn b/dupfiles.mdwn index a4e59da..5832e1e 100644 --- a/dupfiles.mdwn +++ b/dupfiles.mdwn @@ -21,7 +21,7 @@ not. Worked for me, but please be careful. Patches most welcome. See also: * [[NEWS]] -* [Bugs](http://code.liw.fi/dupfiles/bugs/) +* [[Bugs]] Downloads: diff --git a/dupfiles/bugs.mdwn b/dupfiles/bugs.mdwn new file mode 100644 index 0000000..1f188a3 --- /dev/null +++ b/dupfiles/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in dupfiles +================== + +[[!inline pages="page(dupfiles/bugs/*) and + !dupfiles/bugs/*/* and + !dupfiles/bugs/done and + !link(dupfiles/bugs/done)" + show=0]] +
add bug tracking in ikiwiki for coverage-test-runner
diff --git a/coverage-test-runner.mdwn b/coverage-test-runner.mdwn index 7dd67d4..7bec731 100644 --- a/coverage-test-runner.mdwn +++ b/coverage-test-runner.mdwn @@ -40,5 +40,5 @@ option) any later version. # Development stuff * [bzr trunk](http://code.liw.fi/coverage-test-runner/bzr/trunk/) -* [Bugs](http://code.liw.fi/coverage-test-runner/bugs/) +* [[Bugs]] * [PyPI](http://pypi.python.org/pypi/CoverageTestRunner/) diff --git a/coverage-test-runner/bugs.mdwn b/coverage-test-runner/bugs.mdwn new file mode 100644 index 0000000..5df7ad8 --- /dev/null +++ b/coverage-test-runner/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in coverage-test-runner +================== + +[[!inline pages="page(coverage-test-runner/bugs/*) and + !coverage-test-runner/bugs/*/* and + !coverage-test-runner/bugs/done and + !link(coverage-test-runner/bugs/done)" + show=0]] + diff --git a/coverage-test-runner/bugs/done.mdwn b/coverage-test-runner/bugs/done.mdwn new file mode 100644 index 0000000..dea4afe --- /dev/null +++ b/coverage-test-runner/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for coverage-test-runner +===================== + +[[!inline pages="page(coverage-test-runner/bugs/*) and + !coverage-test-runner/bugs/*/* and + !coverage-test-runner/bugs/done and + link(coverage-test-runner/bugs/done)" + show=0 + archive=yes]] +
mark bug fixed
diff --git a/cliapp/bugs/syslog.mdwn b/cliapp/bugs/syslog.mdwn index 02cbb0b..88c545e 100644 --- a/cliapp/bugs/syslog.mdwn +++ b/cliapp/bugs/syslog.mdwn @@ -1 +1,2 @@ cliapp needs to be able to set up logging to syslog, instead of a file. --liw +[[done]]
new link
diff --git a/links.mdwn b/links.mdwn index 4225190..803a4ed 100644 --- a/links.mdwn +++ b/links.mdwn @@ -230,4 +230,5 @@ incarnation of that web page. [Openpgp key checks](https://we.riseup.net/riseuplabs+paow/openpgp-best-practices#openpgp-key-checks) [Stop energy](http://www.userland.com/whatIsStopEnergy) [Conf anti-harrassment policy](http://geekfeminism.wikia.com/index.php?title=Conference_anti-harassment_policy) +[bookshelfporn](http://bookshelfporn.com)
travel links
diff --git a/links.mdwn b/links.mdwn index 5240838..4225190 100644 --- a/links.mdwn +++ b/links.mdwn @@ -198,6 +198,8 @@ incarnation of that web page. [Redoxx](http://www.redoxx.com/) [Matrix](http://matrix.itasoftware.com/) [Tripit](http://www.tripit.com/) +[ebookers](http://www.ebookers.com/) +[booking.com](http://www.booking.com/) **Places to visit:** [ifitweremyhome](http://www.ifitweremyhome.com/)
foo
diff --git a/mc.mdwn b/mc.mdwn new file mode 100644 index 0000000..5e60084 --- /dev/null +++ b/mc.mdwn @@ -0,0 +1 @@ +[[!inline pages="comment_pending(*)" template=comment]]
Added a comment: Many answers
diff --git a/larch/comment_4_bc0df22cb897658cc722db88982b919e._comment b/larch/comment_4_bc0df22cb897658cc722db88982b919e._comment new file mode 100644 index 0000000..d35fe85 --- /dev/null +++ b/larch/comment_4_bc0df22cb897658cc722db88982b919e._comment @@ -0,0 +1,30 @@ +[[!comment format=mdwn + username="http://liw.fi/" + nickname="Lars Wirzenius" + subject="Many answers" + date="2011-11-26T20:42:04Z" + content=""" +Larch works with one writer at a time. If you set up mutual +exclusion (locking) between them, many writers will work too. +However, Larch itself does not deal with locking, and leaves it +entirely up to you. + +I use clones in my backup application to implement backup +generations. Clones are not sufficient for multiple writers, +because some things, such as the reference counts, are shared +between all clones and need mutual exclusion for updates. + +I have not given much thought for supporting multiple writers +directly in Larch. It's not been something that's been interesting +to the case where I use Larch (my backup program). + +I see no reason why an SQL implementation like Sqlite could not be +built on top of Larch. However, it's not something I have any +interest working on. + +If a commit fails, the \"forest\" metadata does not get updated, +and the readers do not see any changes. There may be some garbage +files on the disk (nodes that got written, but whose trees got +lost from the list of clones in the forest), but apart from +wastig space, they should be harmless. +"""]]
Add cliapp bugs list
diff --git a/cliapp.mdwn b/cliapp.mdwn index a7b7f4c..641da48 100644 --- a/cliapp.mdwn +++ b/cliapp.mdwn @@ -15,4 +15,4 @@ Status: BETA. The API should no longer change in incompatible ways. * Version control: `bzr get http://code.liw.fi/cliapp/bzr/trunk/` * Tarball and Debian packages: <http://code.liw.fi/debian/pool/main/p/python-cliapp/> -* [Bugs](http://code.liw.fi/cliapp/bugs/) +* [[Bugs]] diff --git a/cliapp/bugs.mdwn b/cliapp/bugs.mdwn new file mode 100644 index 0000000..9937892 --- /dev/null +++ b/cliapp/bugs.mdwn @@ -0,0 +1,9 @@ +Open bugs in cliapp +================== + +[[!inline pages="page(cliapp/bugs/*) and + !cliapp/bugs/*/* and + !cliapp/bugs/done and + !link(cliapp/bugs/done)" + show=0]] + diff --git a/cliapp/bugs/done.mdwn b/cliapp/bugs/done.mdwn new file mode 100644 index 0000000..ea6c54d --- /dev/null +++ b/cliapp/bugs/done.mdwn @@ -0,0 +1,10 @@ +Closed bugs for cliapp +===================== + +[[!inline pages="page(cliapp/bugs/*) and + !cliapp/bugs/*/* and + !cliapp/bugs/done and + link(cliapp/bugs/done)" + show=0 + archive=yes]] + diff --git a/cliapp/bugs/syslog.mdwn b/cliapp/bugs/syslog.mdwn new file mode 100644 index 0000000..02cbb0b --- /dev/null +++ b/cliapp/bugs/syslog.mdwn @@ -0,0 +1 @@ +cliapp needs to be able to set up logging to syslog, instead of a file. --liw
Update link
diff --git a/links.mdwn b/links.mdwn index 32b92a1..5240838 100644 --- a/links.mdwn +++ b/links.mdwn @@ -56,7 +56,7 @@ incarnation of that web page. [Pronounciation](http://www.paul.sladen.org/pronunciation/) **Upstreams:** -[Sound Converter](http://soundconverter.berlios.de/) +[Sound Converter](http://soundconverter.org/) [moreutils](http://kitenet.net/~joey/code/moreutils/) [coverage.py](http://nedbatchelder.com/code/modules/coverage.html) [Dimbola](http://dimbola.org)
Add link
diff --git a/links.mdwn b/links.mdwn index 6ac1804..32b92a1 100644 --- a/links.mdwn +++ b/links.mdwn @@ -178,6 +178,7 @@ incarnation of that web page. [#phonar](http://phonar.covmedia.co.uk/) [Manchester Photographic](http://www.manchesterphotographic.com/) [ColorHug](http://www.hughski.com/) +[Stalybridge Photographic Club](http://www.stalybridgephoto.org.uk/) **Offices:** [Stefan Didak's home office](http://www.stefandidak.com/office/)