summaryrefslogtreecommitdiff
path: root/README
blob: 09c72e50f56b9d14fa13b3475fa8a46588874a24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Obnam, a backup program
=======================

Obnam is a backup program. It is currently ALPHA quality, meaning that
some things work, but many things don't, there are probably a lot of bugs,
and if you rely on it, you will turn bitter and hateful, and will abandon
all hope for civilisation, move into the rain forest, and talk to birds
for the rest of your life.

In other words, don't use it for anything real yet.


Home page
---------

The Obnam home page is at <http://braawi.org/obnam/>, see there
for more information.

More usefully, perhaps, the on-disk data structure description
(i.e., how obnam uses copy-on-write B-trees), is at
<http://braawi.org/obnam/ondisk/>.


Installation
------------

The source tree contains packaging for Debian. Run "debuild -us -uc" to
build an installation package.

On other systems, using the setup.py file might work: run
"python setup.py --help" for advice. If not, please tell me how to fix it.

You need to install my B-tree, and some other libraries and tools, which you 
can get from:

* <http://liw.fi/larch/>
* <http://liw.fi/ttystatus/>
* <http://liw.fi/lru/>
* <http://liw.fi/coverage-test-runner/>
* <http://liw.fi/extrautils/>


Use
---

To get a quick help summary of options:

    ./obnam --help
    
To make a backup:

    ./obnam backup --repository /tmp/mybackup $HOME

For more information, see the manual page:

    man -l obnam.1 


Hacking
-------

The canonical version control repository for obnam itself is at:

    http://code.liw.fi/obnam/bzr/

The 'trunk' branch is the main development one. Note that the URL points
at a bzr repository, it is not useful to browse it by hand.

To build:

    make
    
To run automatic tests:

    make check
    python test-sftpfs # Read it first, though. Requires ssh setup.
    
You need my CoverageTestRunner to run tests, see above for where to get it.
A couple of scripts exist to run benchmarks and profiles:

    ./run-benchmark
    viewprof obnam.prof cumulative | less -S
    
viewprof is a little helper script I wrote, around the Python pstats module.
You can use your own, or get mine from extrautils (see above).

If you make any changes, I welcome patches, either as plain diffs, bzr
bundles, or public repositories I can merge from.

The code layout is roughly like this:

    obnamlib/               # all the real code
    obnamlib/plugins/       # the plugin code (see pluginmgr.py)
    obnam                   # script to invoke obnam
    _obnammodule.c          # wrapper around some system calls

In obnamlib, every code module has a corresponding test module,
and "make check" uses CoverageTestRunner to run them pairwise. For
each pair, test coverage must be 100% or the test will fail.
Mark statements that should not be included in coverage test with
"# pragma: no cover", if you really, really can't write a test.
without-tests lists modules that have no test modules.

If you want to make a new release of Obnam, I recommend following
my release checklist: <http://braawi.org/obnam/release/>.

Feedback
--------

I welcome bug fixes, enhancements, bug reports, suggestions, requests,
and other feedback. I prefer e-mail (mailto:liw@liw.fi).

It would be helpful if you can run "make clean check" before submitting
a patch, but it is not strictly required.


Legal stuff
-----------

Most of the code is written by Lars Wirzenius. (Please provide patches
so that can change.)

The code is covered by the GNU General Public License, version 3 or later.

Copyright 2010  Lars Wirzenius

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 3 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, see <http://www.gnu.org/licenses/>.