summaryrefslogtreecommitdiff
path: root/contrib/mtn2git
AgeCommit message (Collapse)AuthorFiles
2008-03-31mtn2git: Add an example script that can be used to update the git mirrorHolger Freyther1
This is an example as it is using relative paths and needs some changes to work for you. It assumes that you have a git repository (git-init was ran) and then will update it there. Before each update it will clone the git repository and copy the old state files into the repository. So in case something goes wrong you can do a post mortom. The state files are relatively small and the git repository is working with hardlinks so it does not even take too much space. On first pull you need to run git-repack or git-gc
2008-01-13* Incrementally updating the former heads did not work right. Sometimes we haveHolger Freyther1
saved bogus data and it could be dangerous. * Back-out this change and save the heads at the end of the script.
2008-01-13* Import revisions without a parent properly! The diffing would have been ↵Holger Freyther1
all right but we have not diffed the two manifests at all. Now we are diffinf an empty manifest against the initial one.
2008-01-08contrib/mtn2git/mtn2git.py: Start diffing the manifests and find ↵Holger Freyther1
added,deleted dirs and added,deleted,modified files -Fix bug with gathering the all_deleted (I got the union wrong) -Diff everything and change what we store inside the sets. Storing the rev in the set is superfluous.
2008-01-08contrib/mtn2git/mtn2git.py: Return the tree if it is was not in the cache!Holger Freyther1
2008-01-08contrib/mtn2git/mtn2git.py: Add the TODO for sanity checking!Holger Freyther1
2008-01-08contrib/mtn2git/mtn2git.py: Stub the most important function. diff_manifest ↵Holger Freyther1
will tell us what to do
2008-01-08contrib/mtn2git/mtn2git.py: Add modifications to the right list, check if ↵Holger Freyther1
_file_revision and file_revision of the manifest are equal
2008-01-08contrib/mtn2git/mtn2git.py: Built a fifo to avoid parsing the manifests all ↵Holger Freyther1
over again I decided to use a FIFO for two reasons: -Simplicity in the implementation -Parent and Childs are normally close (<= 100 revisions) to each other. So having the fifo should avoid parsing the parent manifest over and over again. Also with "merge early and merge often" the 100 revs should be enough to catch merges as well.
2008-01-08contrib/mtn2git/mtn2git.py: Have only one function that is parsing the manifestHolger Freyther1
Build a directory tree from a manifest with all the information we need. This currently is a list of directory names and a list of files (with absolute paths) and their revision and the executable attribute.
2008-01-08contrib/mtn2git/mtn2git.py: We are not interested in these bits. Do not ↵Holger Freyther1
store them.
2008-01-08contrib/mtn2git/mtn2git.py: Remove all old code that tried to figure out ↵Holger Freyther1
what changes happened Make place for the new code that is diffing the manifest directly. This avoids all the funky mess with recursive directory renames and undoing what mtn told us happened. git is clever enough to figure out moves and copying of files on its own.
2008-01-08contrib/mtn2git: Start with only using the manifestsHolger Freyther1
2008-01-07contrib/mtn2git: Ignore unknown certs, try to be more robust against CTRL-C ↵Holger Freyther2
when saving the status
2007-10-09contrib/mtn2git: mtn add is not recursive by default, actually add files ;)Holger Freyther10
2007-10-08contrib/mtn2git: Add a tool to export the monotone database to gitHolger Freyther1
This is just a snapshot from my mtn tree on the request of some random people sitting in this room... This will use the automate interface of monotone to export the history in a format readable by git-fast-import ../../mtn2git/mtn2git.py --db ../../../mtn2git/OE.mtn --marks=../mtn2git-marks --status=../mtn2git-status.v2 | git-fast-import --date-format=rfc2822 --import-marks=../git-import-marks --export-marks=../git-import-marks