* more revision control systems
-* support for tracking repo renames
- It should be possible to tell mr that there used to be a repo at
- src/foo/bar, and it's been moved to src/bar. mr would then detect if the
- move needs to be done, and handle it. This is mostly useful when mrconfig
- files are shared accross several systems.
+* a way to detect repos in a tree that are not registered, and warn
+ about or even auto-register them. (svn externals make this quite
+ difficult!)
- [src/bar]
- renamedfrom = src/foo/bar
+* When there are chained mrconfig files, mr could be smarter about
+ checkouts and updates. Ie, when a new version of an mrconfig file is
+ checked out or updated, throw all the info from the old one away, and
+ process the new one.
- (Support multple renames of a single repo?)
+ Until this is fixed, checkouts and updates need to be manually repeated
+ after mrconfig files have changes.
-* repo deletions
+* offline support
- Handling repo deletions might also be possible, but is tricky, since
- there's no good way to tell if a local checkout of a given repo is clean
- and really should be deleted. Probably better for mr to just warn that a
- repo still exists on disk that it is no longer managed.
+ If I commit something to git while offline, it would be nice if mr could
+ have a way to push that change when I get online.
- [src/foo/baz]
- deleted = yes
+ One approach would be to notice when mr commit fails, and queue the
+ commit up to be tried happen again when "mr retry" is run. This could
+ also notice other failing commands, such as "mr up".
-* mr register
+ Would it make sense to have to first run "mr offline", before mr starts
+ recording such failures? If so, "mr online" would be the thing to run
+ when getting back online, this would both retry queued commands, and stop
+ queuing new failures.
- Idea is you check out a repo and then use mr register to add it to the
- closest mrconfig file.
-
- mr register would be implemented as a shell command that then calls
- mr config with flags that make it actually edit the mrconfig file:
-
- if [ -d "$MR_REPO/.svn" ]; then
- url=$(svn info "$MR_REPO" | grep -i ^URL: | cut -d ' ' -f 2)
- if [ -z "$url" ]; then
- error "cannot determine svn url"
- fi
- mr -c "$MR_CONFIG" config --add "$MR_REPO" --checkout="svn co $URL"
- fi
+ One annoying thing is that, if offline, dns timeouts can take a while in
+ certian situations. So, it might be good to have a "mr remember <command>",
+ to directly add a command for mr to run when coming online, without
+ the need to run the command and wait for it to fail.