/relevation/tags/0.2/LICENSE |
---|
0,0 → 1,24 |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. Neither the name of the University nor the names of its contributors |
may be used to endorse or promote products derived from this software |
without specific prior written permission. |
. |
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGE. |
/relevation/tags/0.2/debian |
---|
0,0 → 1,0 |
link upstream.debian/ |
Property changes: |
Added: svn:special |
+* |
\ No newline at end of property |
/relevation/tags/0.2/CHANGELOG |
---|
0,0 → 1,14 |
0.2.0 (2011-06-27) (unreleased) |
- Allow multiple queries in one run |
- Consider positional arguments as queries |
- Feedback enhancements |
- Added Makefile for installation |
- Added --help and --version |
- Added debian packaging |
- Handle input errors more gracefully |
- Added manpage |
- GNU-style getopt |
0.1.0 (2011-06-24) (internal) |
- Initial proof of concept |
/relevation/tags/0.2/relevation.1 |
---|
0,0 → 1,61 |
.TH "RELEVATION" "1" |
.SH "NAME" |
relevation \(em command-line searcher for \fBRevelation\fP files |
.SH "SYNOPSIS" |
.PP |
\fBrelevation\fR\fB \-f \fI/path/to/file.\fR\fP\fB \-p \fIpassword\fR\fP [\fBsearch string\fP] |
.SH "DESCRIPTION" |
.PP |
Access and print or search passwords in a \fBRevelation\fP password |
file. |
.PP |
Only read access is provided, to edit the files \fBRevelation\fP must be used. |
.PP |
With a search string, only entries that match the search string in any |
of its fields will be printed. |
.PP |
When no search string is provided the whole, unencrypted, XML file will be |
printed. |
.SH "OPTIONS" |
.PP |
This program follows the usual command line syntax, |
with long options starting with two dashes (`\-'). A summary of |
options is included below. For a complete description, see the |
\fBInfo\fP files. |
.IP "\fB-f \fIfile.revelation\fR\fP, \fB\-\-file=\fIfile.revelation\fR\fP " 10 |
File name of the \fBrevelation\fR file (the file |
containing the list of stored credentials). |
.IP "\fB-p \fIpassword\fR\fP, \fB\-\-password=\fIpassword\fR\fP " 10 |
Decryption password. |
.IP "\fB-a\fP, \fB\-\-ask, \fB-0\fP, \fB\-\-stdin\fP\fP " 10 |
Ask interactively for password. |
.IP "" 10 |
When \fB-a\fP or \fB\-\-ask\fP is used a prompt will be printed. |
.IP "" 10 |
Use either one of this variants or \fB\-\-password\fP. |
.IP "\fB-i\fP, \fB\-\-case-insensitive\fP " 10 |
When searching for text, disregard case. |
.IP "" 10 |
This is the default behaviour. |
.IP "" 10 |
If the search string contains special/non-English characters this is |
likely to fail. |
.IP "\fB-c\fP, \fB\-\-case-sensitive\fP " 10 |
When searching for text, obey case. |
.IP "\fB-s \fIsearch string\fR\fP, \fB\-\-search=\fIsearch string\fR\fP, \fB\fIsearch string\fR\fP " 10 |
Search the file for a pice of text. All fields will be searched. |
.IP "\fB-h\fP, \fB\-\-help\fP " 10 |
Show summary of options. |
.IP "\fB\-\-version\fP " 10 |
Show version of program. |
.SH "SEE ALSO" |
.PP |
revelation (1) |
.SH "AUTHOR" |
.PP |
This manual page was written by Toni Corvera outlyer@gmail.com. |
Permission is |
granted to copy, distribute and/or modify this document under |
the terms of a BSD 3-clause license. |
.\" created by instant / docbook-to-man, Mon 27 Jun 2011, 04:51 |
/relevation/tags/0.2/manpage.sgml |
---|
0,0 → 1,185 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
<!-- |
This file is derived from Debian's template for added manpages. |
Process this file with docbook-to-man to generate an nroff manual |
page: `docbook-to-man manpage.sgml > manpage.1'. You may view |
the manual page with: `docbook-to-man manpage.sgml | nroff -man | |
less'. A typical entry in a Makefile or Makefile.am is: |
manpage.1: manpage.sgml |
docbook-to-man $< > $@ |
--> |
<!-- Fill in your name for FIRSTNAME and SURNAME. --> |
<!ENTITY dhfirstname "<firstname>Toni</firstname>"> |
<!ENTITY dhsurname "<surname>Corvera</surname>"> |
<!-- Please adjust the date whenever revising the manpage. --> |
<!ENTITY dhdate "<date>June 27, 2011</date>"> |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
allowed: see man(7), man(1). --> |
<!ENTITY dhsection "<manvolnum>1</manvolnum>"> |
<!ENTITY dhemail "<email>outlyer@gmail.com</email>"> |
<!ENTITY dhusername "Toni Corvera"> |
<!ENTITY dhucpackage "<refentrytitle>RELEVATION</refentrytitle>"> |
<!ENTITY dhpackage "relevation"> |
]> |
<refentry> |
<refentryinfo> |
<address> |
&dhemail; |
</address> |
<author> |
&dhfirstname; |
&dhsurname; |
</author> |
<copyright> |
<year>2003</year> |
<holder>&dhusername;</holder> |
</copyright> |
&dhdate; |
</refentryinfo> |
<refmeta> |
&dhucpackage; |
&dhsection; |
</refmeta> |
<refnamediv> |
<refname>&dhpackage;</refname> |
<refpurpose>command-line searcher for <application>Revelation</application> files</refpurpose> |
</refnamediv> |
<refsynopsisdiv> |
<cmdsynopsis> |
<command>&dhpackage;</command> |
<option> -f <replaceable>/path/to/file.</replaceable></option> |
<option> -p <replaceable>password</replaceable></option> |
<arg><option>search string</option></arg> |
</cmdsynopsis> |
</refsynopsisdiv> |
<refsect1> |
<title>DESCRIPTION</title> |
<para>Access and print or search passwords in a <application>Revelation</application> password |
file.</para> |
<para>Only read access is provided, to edit the files <application>Revelation</application> |
must be used.</para> |
<para>With a search string, only entries that match the search string in any |
of its fields will be printed.</para> |
<para>When no search string is provided the whole, unencrypted, XML file will be |
printed.</para> |
</refsect1> |
<refsect1> |
<title>OPTIONS</title> |
<para>This program follows the usual &gnu; command line syntax, |
with long options starting with two dashes (`-'). A summary of |
options is included below. For a complete description, see the |
<application>Info</application> files.</para> |
<variablelist> |
<varlistentry> |
<term><option>-f <replaceable>file.revelation</replaceable></option>, <option>--file=<replaceable>file.revelation</replaceable></option> |
</term> |
<listitem> |
<para>File name of the <command>revelation</command> file (the file |
containing the list of stored credentials).</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-p <replaceable>password</replaceable></option>, <option>--password=<replaceable>password</replaceable></option> |
</term> |
<listitem> |
<para>Decryption password.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-a</option>, <option>--ask, <option>-0</option>, <option>--stdin</option></option> |
</term> |
<listitem> |
<para>Ask interactively for password.</para> |
<para>When <option>-a</option> or <option>--ask</option> is used a prompt will be printed.</para> |
<para>Use either one of this variants or <option>--password</option>.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-i</option>, <option>--case-insensitive</option> |
</term> |
<listitem> |
<para>When searching for text, disregard case.</para> |
<para>This is the default behaviour.</para> |
<para>If the search string contains special/non-English characters this is |
likely to fail.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-c</option>, <option>--case-sensitive</option> |
</term> |
<listitem> |
<para>When searching for text, obey case.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-s <replaceable>search string</replaceable></option>, <option>--search=<replaceable>search string</replaceable></option>, <option><replaceable>search string</replaceable></option> |
</term> |
<listitem> |
<para>Search the file for a pice of text. All fields will be searched.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>-h</option>, <option>--help</option> |
</term> |
<listitem> |
<para>Show summary of options.</para> |
</listitem> |
</varlistentry> |
<varlistentry> |
<term><option>--version</option> |
</term> |
<listitem> |
<para>Show version of program.</para> |
</listitem> |
</varlistentry> |
</variablelist> |
</refsect1> |
<refsect1> |
<title>SEE ALSO</title> |
<para>revelation (1)</para> |
</refsect1> |
<refsect1> |
<title>AUTHOR</title> |
<para>This manual page was written by &dhusername; &dhemail;. |
Permission is |
granted to copy, distribute and/or modify this document under |
the terms of a BSD 3-clause license. |
</para> |
</refsect1> |
</refentry> |
<!-- Keep this comment at the end of the file |
Local variables: |
mode: sgml |
sgml-omittag:t |
sgml-shorttag:t |
sgml-minimize-attributes:nil |
sgml-always-quote-attributes:t |
sgml-indent-step:2 |
sgml-indent-data:t |
sgml-parent-document:nil |
sgml-default-dtd-file:nil |
sgml-exposed-tags:nil |
sgml-local-catalogs:nil |
sgml-local-ecat-files:nil |
End: |
--> |
/relevation/tags/0.2/Makefile |
---|
0,0 → 1,32 |
prefix:=/usr/local |
DESTDIR:= |
PKG=relevation |
VERSION=$(shell echo -e 'import relevation\nprint relevation.__version__' | python -) |
PKGVER=$(PKG)-$(VERSION) |
all: $(PKG).1 |
clean: |
-$(RM) $(PKG).pyc |
install: |
install -D -m755 $(PKG).py $(DESTDIR)$(prefix)/bin/$(PKG) |
install -D -m644 $(PKG).1 $(DESTDIR)$(prefix)/share/man/man1/$(PKG).1 |
uninstall: |
-$(RM) $(DESTDIR)$(prefix)/$(PKG) |
-rmdir --parents $(DESTDIR)$(prefix)/bin |
$(PKG).1: manpage.sgml |
docbook-to-man $< > $@ |
TAR_EXCLUDES=--exclude=debian --exclude-vcs --exclude=$(PKGVER) --exclude=*.pyo --exclude=*.pyc |
dist: clean |
-$(RM) $(PKGVER).tar.gz |
-mkdir $(PKGVER) |
tar c . $(TAR_EXCLUDES) | ( cd $(PKGVER) && tar x ) |
tar zcvf $(PKGVER).tar.gz $(PKGVER) |
-$(RM) -r $(PKGVER) |
/relevation/tags/0.2/relevation.py |
---|
0,0 → 1,203 |
#!/usr/bin/env python |
# -*- coding: UTF-8 -*- |
""" |
Relevation Password Printer |
a command line interface to Revelation Password Manager. |
This program is published under a BSD 3-clause license, |
the full license text is included in a separate file. |
Code based on Revelation's former BTS (no longer online, not archived?): |
(ref1) code: |
http://oss.wired-networks.net/bugzilla/attachment.cgi?id=13&action=view |
(ref2) bug report: |
http://oss.wired-networks.net/bugzilla/show_bug.cgi?id=111 |
-> http://web.archive.org/http://oss.wired-networks.net/bugzilla/show_bug.cgi?id=111 |
(ref3) http://docs.python.org/library/zlib.html |
""" |
import getopt |
import libxml2 |
import os |
import sys |
import zlib |
from Crypto.Cipher import AES |
__author__ = 'Toni Corvera' |
__date__ = '$Date$' |
__revision__ = '$Rev$' |
__version_info__ = ( 0, 2, 0 ) |
__version__ = '.'.join(map(str, __version_info__)) |
RELEASE=True |
def usage(channel): |
def p(s): |
channel.write(s) |
p('%s {-f passwordfile} {-p password | -0} search [search2] [...]\n' % sys.argv[0]) |
p('\nOptions:\n') |
p(' -f <FILE>, --file=<FILE> Revelation password file\n') |
p(' -p <PASS>, --password=<PASS> Master password\n') |
p(' -s <SEARCH>, --search=<SEARCH> Search for string\n') |
p(' -i, --case-insensitive Case insensitive search [default]\n') |
p(' -c, --case-sensitive Case sensitive search\n') |
p(' -a, --ask Interactively ask for password.\n') |
p(' Note it will be displayed in clear as you\n') |
p(' type it.\n') |
p(' -0, --stdin Read password from standard input\n') |
p(' -h, --help Print help (this message).\n') |
p(' --version Print the program\'s version information.\n') |
p('\n') |
def search(xmldata, search, caseInsensitive=True): |
doc = libxml2.parseDoc(xmldata) |
ctxt = doc.xpathNewContext() |
commonXPath = '//revelationdata//entry[@type!="folder"]//text()' |
caseSensitiveXPath = '[contains(., "%s")]/../..' % search |
caseInsensitiveXPath = '[contains(translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"), "%s")]/../..' % search |
if caseInsensitive: |
xpath = commonXPath + caseInsensitiveXPath |
else: |
xpath = commonXPath + caseSensitiveXPath |
res = ctxt.xpathEval(xpath) |
print '-> Search "%s": ' % search, |
if not len(res): |
print 'No results' |
sys.exit(80) |
print '%d matches' % len(res) |
tagnames ={ 'generic-url': 'Url:', |
'generic-username': 'Username:', |
'generic-password': 'Password:', |
'generic-email': 'Email:', |
'generic-hostname': 'Hostname:', |
} |
for x in res: |
print '- * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - ' |
print '' |
for attr in x.properties: # Is it accessible directly? |
if attr.name == 'type': |
print 'Type:',attr.children |
for chld in x.children: |
n = chld.name |
val = chld.content |
if n == 'name': |
print 'Name:',val |
elif n == 'description': |
print 'Description:',val |
elif n == 'field': |
for attr in chld.properties: |
if attr.name == 'id': |
idv = attr.content |
if idv in tagnames: |
idv = tagnames[idv] |
print idv,chld.content |
print '' |
# / for chld in x.children |
nr = len(res) |
plural = '' |
if nr > 1: |
plural = 's' |
sys.stderr.write('<- (end of %d result%s for "%s")\n\n' % ( nr, plural, search )) |
doc.freeDoc() |
ctxt.xpathFreeContext() |
def main(): |
datafile = None |
password = None |
searches = [] |
caseInsensitive = True |
sys.stderr.write('Relevation v%s, (c) 2011 Toni Corvera\n\n' % __version__) |
try: |
# gnu_getopt requires py >= 2.3 |
ops, args = getopt.gnu_getopt(sys.argv[1:], 'f:p:s:0ciah', |
[ 'file=', 'password=', 'search=', 'stdin', |
'case-sensitive', 'case-insensitive', 'ask', |
'help', 'version' ]) |
except getopt.GetoptError, err: |
print str(err) |
usage(sys.stderr) |
sys.exit(os.EX_USAGE) |
if args: |
searches = args |
if ( '-h', '' ) in ops or ( '--help', '' ) in ops: |
usage(sys.stdout) |
sys.exit(os.EX_OK) |
if ( '--version', '' ) in ops: |
release='' |
if not RELEASE: |
release=' [DEBUG]' |
print 'Relevation version %s%s' % ( __version__, release ) |
print 'Python version %s' % sys.version |
sys.exit(os.EX_OK) |
for opt, arg in ops: |
if opt in ( '-f', '--file' ): |
datafile = arg |
elif opt in ( '-p', '--password' ): |
password = arg |
elif opt in ( '-a', '--ask', '-0', '--stdin' ): |
if opt in ( '-a', '--ask' ): |
sys.stderr.write('File password: ') |
password = sys.stdin.readline() |
password = password[:-1] |
elif opt in ( '-s', '--search' ): |
searches.append(arg) |
elif opt in ( '-i', '--case-insensitive' ): |
caseInsensitive = True |
elif opt in ( '-c', '--case-sensitive' ): |
caseInsensitive = False |
else: |
sys.stderr.write('Unhandled option: %s\n' % opt) |
assert False, "internal error parsing options" |
if not datafile or not password: |
usage(sys.stderr) |
if not datafile: |
sys.stderr.write('Input password filename is required\n') |
if not password: |
sys.stderr.write('Password is required\n') |
sys.exit(os.EX_USAGE) |
# Encrypted data |
f = None |
try: |
if not os.access(datafile, os.R_OK): |
raise IOError('File \'%s\' not accessible' % datafile) |
f = open(datafile, "rb") |
data = f.read() |
finally: |
if f: |
f.close() |
# Pad password |
password += (chr(0) * (32 - len(password))) |
# Data IV |
c = AES.new(password) |
iv = c.decrypt(data[12:28]) |
# Decrypt. Decrypted data is compressed |
c = AES.new(password, AES.MODE_CBC, iv) |
cleardata_gz = c.decrypt(data[28:]) |
# Length of data padding |
padlen = ord(cleardata_gz[-1]) |
# Decompress actual data (15 is wbits [ref3] DON'T CHANGE, 2**15 is the (initial) buf size) |
xmldata = zlib.decompress(cleardata_gz[:-padlen], 15, 2**15) |
if not searches: |
print xmldata |
sys.exit(os.EX_OK) |
for s in searches: |
search(xmldata, s, caseInsensitive) |
if __name__ == '__main__': |
try: |
main() |
except libxml2.parserError as e: |
sys.stderr.write('XML parsing error\n') |
if not RELEASE: |
traceback.print_exc() |
sys.exit(os.EX_DATAERR) |
except IOError as e: |
if not RELEASE: |
traceback.print_exc() |
sys.stderr.write(str(e)+"\n") |
sys.exit(os.EX_IOERR) |
# vim:set ts=4 et ai fileencoding=utf-8: # |
Property changes: |
Added: svn:executable |
Added: svn:keywords |
+Rev Id Date |
\ No newline at end of property |
/relevation/tags/0.2/upstream.debian/docs |
---|
--- tags/0.2/upstream.debian/control (nonexistent) |
+++ tags/0.2/upstream.debian/control (revision 134) |
@@ -0,0 +1,19 @@ |
+Source: relevation |
+Section: contrib/utils |
+Priority: extra |
+Maintainer: Toni Corvera <outlyer@gmail.com> |
+Build-Depends: debhelper (>= 7.0.50~) |
+Standards-Version: 3.9.1 |
+Homepage: http://p.outlyer.net/relevation/ |
+#Vcs-Git: git://git.debian.org/collab-maint/relevation.git |
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/relevation.git;a=summary |
+ |
+Package: relevation |
+Architecture: all |
+Depends: ${shlibs:Depends}, ${misc:Depends}, python (>= 2.3), python-libxml2, python-crypto |
+Recommends: revelation |
+Description: Command-line interface to query Revelation files |
+ This is a command-line tool capable of retrieving passwords from |
+ a Revelation password file. |
+ . |
+ Please note files can only be searched, not edited with this tool. |
/relevation/tags/0.2/upstream.debian/README.source |
---|
0,0 → 1,7 |
relevation for Debian |
--------------------- |
The upstream source includes a default set of Debian |
packaging scripts in the upstream.debian/ directory (linked |
by default as debian/ to allow direct construction of the package) |
/relevation/tags/0.2/upstream.debian/source/format |
---|
0,0 → 1,0 |
3.0 (quilt) |
/relevation/tags/0.2/upstream.debian/compat |
---|
0,0 → 1,0 |
7 |
/relevation/tags/0.2/upstream.debian/changelog |
---|
0,0 → 1,5 |
relevation (0.2-upstream.1) unstable; urgency=low |
* Initial release |
-- Toni Corvera <outlyer@gmail.com> Mon, 27 Jun 2011 01:44:10 +0200 |
/relevation/tags/0.2/upstream.debian/copyright |
---|
0,0 → 1,37 |
Format: http://dep.debian.net/deps/dep5 |
Upstream-Name: relevation |
Source: http://p.outlyer.net/revelation/ |
Files: * |
Copyright: 2011 Toni Corvera <outlyer@gmail.com> |
License: BSD-3-Clause |
Files: debian/* |
Copyright: 2011 Toni Corvera <outlyer@gmail.com> |
License: BSD-3-Clause |
License: BSD-3-Clause |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. Neither the name of the University nor the names of its contributors |
may be used to endorse or promote products derived from this software |
without specific prior written permission. |
. |
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGE. |
/relevation/tags/0.2/upstream.debian/rules |
---|
0,0 → 1,17 |
#!/usr/bin/make -f |
# -*- makefile -*- |
# Sample debian/rules that uses debhelper. |
# This file was originally written by Joey Hess and Craig Small. |
# As a special exception, when this file is copied by dh-make into a |
# dh-make output file, you may use that output file without restriction. |
# This special exception was added by Craig Small in version 0.37 of dh-make. |
# Uncomment this to turn on verbose mode. |
#export DH_VERBOSE=1 |
%: |
dh $@ |
override_dh_auto_install: |
$(MAKE) DESTDIR=$(CURDIR)/debian/relevation prefix=/usr install |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/relevation/tags/0.2/upstream.debian/README.Debian |
---|
0,0 → 1,8 |
relevation for Debian |
--------------------- |
This package is derived from the upstream tarball's Debian |
packaging scripts. Those are not written by a Debian developer |
so they may inadvertently break packaging rules or conventions. |
-- Toni Corvera <outlyer@gmail.com> Mon, 27 Jun 2011 01:44:10 +0200 |
/relevation/tags/0.2 |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /relevation/branches/0.2:r122-130 |