# # patch "dumb.py" # from [c2bf50694f1bb54ab701e3d5a77f244294e77a19] # to [73e69017052ea087951513ac0e3075eaa5afb1f6] # # patch "monotone.py" # from [7739e5ad560fd3abfbe42a27c056f8dabc41f62d] # to [721acaadb1b9b3d40b62061db53f4bbb4ce4cb4c] # ======================================================================== --- dumb.py c2bf50694f1bb54ab701e3d5a77f244294e77a19 +++ dumb.py 73e69017052ea087951513ac0e3075eaa5afb1f6 @@ -23,14 +23,14 @@ md = MerkleDir(writeable_fs_for_url(url)) try: md.begin() - keys = monotone.keys() + curr_ids = Set(md.all_ids()) + keys = monotone.key_names() for k in keys: kp = monotone.get_pubkey_packet(k) id = sha.new(kp).hexdigest() if id not in curr_ids: data = zlib.compress(kp) md.add(id, data) - curr_ids = Set(md.all_ids()) for rid in monotone.toposort(monotone.revisions_list()): certs = monotone.get_cert_packets(rid) for cert in certs: ======================================================================== --- monotone.py 7739e5ad560fd3abfbe42a27c056f8dabc41f62d +++ monotone.py 721acaadb1b9b3d40b62061db53f4bbb4ce4cb4c @@ -59,10 +59,10 @@ return sorted def get_revision(self, rid): - return self.run_monotone(["cat", "revision", rid]) + return self.run_monotone(["automate", "get_revision", rid]) def get_pubkey_packet(self, keyid): - return self.run_monotone(["pubkey"], keyid) + return self.run_monotone(["pubkey", keyid]) def get_revision_packet(self, rid): return self.run_monotone(["rdata", rid]) @@ -92,14 +92,15 @@ return packets def key_names(self): - output = self.run_monotone(["ls", "keys"]) - lines = output.split("\n") + output = self.run_monotone(["automate", "keys"]) + print output + keys_parsed = self.basic_io_parser(output) ids = {} - for l in lines: - if not l.strip() or l.strip() in ("[public keys]", "[private keys]"): - continue - fpr, keyid = l.strip().split() - ids[keyid] = None + for stanza in keys_parsed: + assert stanza[0][0] == "name" + key_name = stanza[0][1] + ids[key_name] = None + return ids.keys() # returns output as a string, raises an error on error