<div dir="ltr">Hey, great project!  I was frustrated with the two password managers I've been using.  I thought about how I'd like a password manager to be designed, which involved small gpg-encrypted documents backed by git.  I'm glad I found your project before I launched into a new, unnecessary implementation.<div>

<br></div><div>The contrib script for importing from keepass was skipping all my entries, which are stored at the Keepass root level.  The patch below fixed it.</div><div><br></div><div>Repro steps:</div><div>1. In KeePass, add some entries as children of the root node</div>

<div>2. Export the KeePass to foo.xml</div><div>3. 'keepass2pass.py -f foo.xml'</div><div>Expect: all entries imported</div><div>Actual: root-level entries are skipped<br><div><br></div><div><div>diff --git a/contrib/keepass2pass.py b/contrib/keepass2pass.py</div>

<div>index 16764bd..80a2ad9 100755</div><div>--- a/contrib/keepass2pass.py</div><div>+++ b/contrib/keepass2pass.py</div><div>@@ -90,6 +90,7 @@ def import_passwords(xml_file, root_path=None):</div><div>         xml_tree = ElementTree.XML(text)</div>

<div>         root = xml_tree.find('Root')</div><div>         root_group = root.find('Group')</div><div>+        import_group(entries,root_group,'')</div><div>         if root_path is None: root_path = root_group.find('Name').text</div>

<div>         groups = root_group.findall('Group')</div><div>         for group in groups:</div></div><div><br></div></div><div>Thanks, and keep it up!</div><div><br></div><div>Erik</div></div>