Rather than assuming we're writing to an existing repository:
* git init the target repository if required
* store the previous state of the exporter inside the target repository
* also export the marks to make a subsequent reimport easier
Since we are storing the whole state, the remember-commits file is less relevant than before
When remembering previous commits, mark them as archived commits
Handle commit subjects not being present (for archived commits from a previous run)
Make `import_mark_file` an attribute of the object
We need to know `repo, commit_id` as a pair for written commits, and handle archive_commits too
Skip previously archived commits
We need `subprocess` to run `git init`
Remember what the export id offsets are for each repository
Added method to reset the state of the exporter in terms of id numbers
Add an extra check
More logging, and track id translations
New strategy for resetting ids
Allow adjusting for previous exported marks to prevent conflict
Added `merge_map` and save it after weave, which records the relationship between commit ids and their merged export marks
Use this for all commits when writing to ensure the links are correct
Handle things that are missing, and don't log skipping previous commits
Since combined_branches get altered along the way, restore them before resaving state
Handle existing commits differently; don't regenerate the tree, but rather stitch it on after the last commit (since we can't change history before then)