$HeadURL$ $LastChangedRevision$ code ---- Something is wrong the trigger for blocking host deletion when there is still an accesss for it: [root@spaghetti yum.repos.d]# sqlite3 ~/.paa/paa.sqlite SQLite version 3.6.20 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> pragma foreign_keys = on; sqlite> update hosts set status = 'deleting' where host == 'spaghetti'; Error: constraint failed sqlite> (It should have produced a trigger-based error message, but this is something else.) With mirror() calling 'begin transaction' and 'end transaction' around the mirroring, then it locks out other instances (e.g. a second manual mirror of a different repo). Without them an interrupted mirroring leaves the status as 'updating'. If I use savepoints instead, is that still the case? Should I block 'paa editrepo X' if X has a mirror (and a chain of other stuff)? bs should delete empty .queue directories docs ---- Update man pages, including for rpmmirror. DB changes that need documented in the UML diagram: path@controls --> file@controls, dir@controls extendeds@paacrt_url_prefix --> extendeds@url Dia has a UML icon for static data (looks like a book with hinge). Try it for the tables at the bottom of the diagram. tests ----- Add a new test that creates repos, mirrors, etc all the way through to accesses. And then it tries to remove them out of order. Like: DIRECTIVES=( unrepo unmirror ... ) for ((I=${DIRECTIVES[*]}; I>0; I--)); do for ((J=0; J<$I; J++)); do paa ${DIRECTIVE[$J]} ... done done (In the I-th loop, only the paa invocation with I==J should work. I.e. the *last* highest-level un-whatever should be possible, but only that one.) deb --- Once rpmmirror man page written, then remove the lintian-override for rpmmirror.1.gz (which is needed because the man page is currently empty).