Recent changes to this wiki:

Added a comment: myrepos .mrconfig config items contain shell scripts
diff --git a/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_3_6862afd7ce4c0c2c6f2553e3088edf5f._comment b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_3_6862afd7ce4c0c2c6f2553e3088edf5f._comment
new file mode 100644
index 0000000..5d296bf
--- /dev/null
+++ b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_3_6862afd7ce4c0c2c6f2553e3088edf5f._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="myrepos .mrconfig config items contain shell scripts"
+ date="2024-02-18T04:09:04Z"
+ content="""
+In the myrepos config file, every single value is a shell snippet, there are no boolean values. In the snippet I posted, it is checking if you want auth disabled (if you set that environment variable), and if that is set then it is skipping the CVS repo when it is one that requires auth (ie it doesn't use pserver). The documentation explains how the skip functionality works, but it is generic and doesn't know anything about individual repo types, remotes or content.
+
+
+"""]]

Added a comment
diff --git a/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_2_9a8a1131c084164796ea27fde3188df3._comment b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_2_9a8a1131c084164796ea27fde3188df3._comment
new file mode 100644
index 0000000..f90fdbc
--- /dev/null
+++ b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_2_9a8a1131c084164796ea27fde3188df3._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="computist"
+ avatar="http://cdn.libravatar.org/avatar/a17d83194742f0bd57df1e9fc6858c8f"
+ subject="comment 2"
+ date="2024-02-17T01:00:52Z"
+ content="""
+What's the significance of using the `x$MR_NO_AUTH` there? Why not just using a boolean flag?
+"""]]

Added a comment: there is a patch
diff --git a/doc/forum/skip___126____47__.mrconfig/comment_2_e197f8e9063750d56b79ab6225a297b4._comment b/doc/forum/skip___126____47__.mrconfig/comment_2_e197f8e9063750d56b79ab6225a297b4._comment
new file mode 100644
index 0000000..ace2e19
--- /dev/null
+++ b/doc/forum/skip___126____47__.mrconfig/comment_2_e197f8e9063750d56b79ab6225a297b4._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="there is a patch"
+ date="2024-02-14T04:34:18Z"
+ content="""
+The `config-flexibility` branch in my [fork on github](https://github.com/pabs3/myrepos) now has a patch that might help with this. I need to audit it for unintended consequences before I can include it in the main version.
+"""]]

Added a comment: write a custom skip command for CVS
diff --git a/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_1_dc61cd2a8bc5cefe38c2c5b4cf2fb883._comment b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_1_dc61cd2a8bc5cefe38c2c5b4cf2fb883._comment
new file mode 100644
index 0000000..017da0d
--- /dev/null
+++ b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__/comment_1_dc61cd2a8bc5cefe38c2c5b4cf2fb883._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="write a custom skip command for CVS"
+ date="2024-02-14T04:32:04Z"
+ content="""
+If you write a write a custom skip command for CVS something like this:
+
+```
+[DEFAULT]
+cvs_skip = if test \"x$MR_NO_AUTH\" != x ; then grep -vq ^:pserver: \"$MR_REPO/CVS/Root\" ; else false ; fi
+```
+
+Then you can skip the CVS repos with a command like this:
+
+```
+MR_NO_AUTH=yes mr update
+```
+
+That should still update unauthenticated CVS repos but skip authenticated ones.
+"""]]

diff --git a/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__.mdwn b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__.mdwn
new file mode 100644
index 0000000..0b435f8
--- /dev/null
+++ b/doc/forum/How_to_enable_password-less_update_for_CVS_repos__63__.mdwn
@@ -0,0 +1 @@
+I use `mr update` at the path where multiple repositories are stored to update them en mass. But now some of the repos are CVS that require passwords. At the moment each time I run `mr update` when it is the turn for mr to update a CVS repo, it prompts me to enter the password, only after me manually typing in the password, it proceeds to run `CVS update` to it. How do I enable password-less update for them? 

another inspiration
diff --git a/doc/todo/emacs_major_mode.mdwn b/doc/todo/emacs_major_mode.mdwn
index 1050aac..0776d35 100644
--- a/doc/todo/emacs_major_mode.mdwn
+++ b/doc/todo/emacs_major_mode.mdwn
@@ -17,7 +17,7 @@ I am thinking of something that, when invoked, would:
     from git (possibly with [overlays](https://www.gnu.org/software/emacs/manual/html_node/elisp/Overlays.html)?)
 
 I think the MVP is basically step 1 and 2 above, with something that
-drops me in the repo on "enter". See also [this guide](https://systemcrafters.net/learning-emacs-lisp/creating-minor-modes/).
+drops me in the repo on "enter". See also [this guide](https://systemcrafters.net/learning-emacs-lisp/creating-minor-modes/). The [shell-maker](https://xenodium.com/a-shell-maker/) package might be good inspiration as well.
 
 Bonus points for a "redacted" mode that calls `mr -j$NCPU -m status`
 for a "only relevant" view.

yet another alternative
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 018ef0d..dfe071f 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -89,6 +89,7 @@ Some more examples of things it can do include:
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [git-repo-updater](https://github.com/earwig/git-repo-updater) gitup: update multiple git repos at once
+* [git-workspaces](https://github.com/orf/git-workspace): set upstreams, parallel fetch
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
 * [gitbatch](https://github.com/isacikgoz/gitbatch): manage multiple git repos in one place
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang

add more refs
diff --git a/doc/todo/emacs_major_mode.mdwn b/doc/todo/emacs_major_mode.mdwn
index d507c03..1050aac 100644
--- a/doc/todo/emacs_major_mode.mdwn
+++ b/doc/todo/emacs_major_mode.mdwn
@@ -17,9 +17,15 @@ I am thinking of something that, when invoked, would:
     from git (possibly with [overlays](https://www.gnu.org/software/emacs/manual/html_node/elisp/Overlays.html)?)
 
 I think the MVP is basically step 1 and 2 above, with something that
-drops me in the repo on "enter".
+drops me in the repo on "enter". See also [this guide](https://systemcrafters.net/learning-emacs-lisp/creating-minor-modes/).
 
 Bonus points for a "redacted" mode that calls `mr -j$NCPU -m status`
 for a "only relevant" view.
 
+Previous art:
+
+ * [multi-magit](https://github.com/luismbo/multi-magit): third-party, not in Debian, not accepted in magit either
+ * [magit repository list](https://magit.vc/manual/magit/Repository-List.html): a bit clunky, slow, needs a list of
+   repo, maybe we could feed myrepos list in there?
+
 -- [[anarcat]]

a dream in my workflow
diff --git a/doc/todo/emacs_major_mode.mdwn b/doc/todo/emacs_major_mode.mdwn
new file mode 100644
index 0000000..d507c03
--- /dev/null
+++ b/doc/todo/emacs_major_mode.mdwn
@@ -0,0 +1,25 @@
+I am dreaming of an Emacs major mode to interact with my repos.
+
+I am thinking of something that, when invoked, would:
+
+ 1. run `mr status` against a given `.mrconfig` (~/.mrconfig, by
+    default, see [processes](https://www.gnu.org/software/emacs/manual/html_node/elisp/Processes.html))
+
+ 2. for reach repo, create a [button](https://www.gnu.org/software/emacs/manual/html_node/elisp/Buttons.html) that, when clicked, would
+    fire an action ([magit](https://magit.vc/) maybe? or some [project.el](https://www.gnu.org/software/emacs/manual/html_node/emacs/Projects.html) thing?
+    possibly some keybindings for each?)
+
+ 3. add a [keymap](https://www.gnu.org/software/emacs/manual/html_node/elisp/Keymaps.html) for the mode that would allow calling `mr update` (or
+    whatever?) on all (or marked?) repos
+
+ 4. possibly hide some parts of the `mr status` output
+    (e.g. [invisible text](https://www.gnu.org/software/emacs/manual/html_node/elisp/Invisible-Text.html), challenge here is to tell the mr output
+    from git (possibly with [overlays](https://www.gnu.org/software/emacs/manual/html_node/elisp/Overlays.html)?)
+
+I think the MVP is basically step 1 and 2 above, with something that
+drops me in the repo on "enter".
+
+Bonus points for a "redacted" mode that calls `mr -j$NCPU -m status`
+for a "only relevant" view.
+
+-- [[anarcat]]

Fix URL
diff --git a/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment b/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment
index edf192b..87c515e 100644
--- a/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment
+++ b/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment
@@ -4,7 +4,5 @@
  subject="comment 1"
  date="2022-09-09T14:09:59Z"
  content="""
-If I understand correctly, you have multiple repositories that are organised in a certain way and you want to run status checks for a certain set of repos, but not necessarily all the repos in a single set are under one single directory. If so, this earlier thread seems similar to what you want and it seems there I suggested exactly what you are doing, but now I see that the code unconditionally loads the primary `~/.mrconfig` file. So, until a better way to do this gets added, I think what you need is to rename `~/.mrconfig` to `~/.mrconfig-global`, make it include your other mr config files, and then use `-c ~/.mrconfig-global` but when you want a different set of repos, you can use `-c` with the mr config file for the other set. Instead of using `-c`, you could also make `~/.mrconfig` a symlink to a mr config file for your \"current\" subset of repos.
-
-https://myrepos.branchable.com/forum/How_to_work_on_a_specific_subset_of_repos__63__/
+If I understand correctly, you have multiple repositories that are organised in a certain way and you want to run status checks for a certain set of repos, but not necessarily all the repos in a single set are under one single directory. If so, [this earlier thread](https://myrepos.branchable.com/forum/How_to_work_on_a_specific_subset_of_repos__63__/) seems similar to what you want and it seems there I suggested exactly what you are doing, but now I see that the code unconditionally loads the primary `~/.mrconfig` file. So, until a better way to do this gets added, I think what you need is to rename `~/.mrconfig` to `~/.mrconfig-global`, make it include your other mr config files, and then use `-c ~/.mrconfig-global` but when you want a different set of repos, you can use `-c` with the mr config file for the other set. Instead of using `-c`, you could also make `~/.mrconfig` a symlink to a mr config file for your \"current\" subset of repos.
 """]]

Added a comment
diff --git a/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment b/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment
new file mode 100644
index 0000000..edf192b
--- /dev/null
+++ b/doc/forum/skip___126____47__.mrconfig/comment_1_ef0ca8692d1f184733cf68564653c9e8._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="comment 1"
+ date="2022-09-09T14:09:59Z"
+ content="""
+If I understand correctly, you have multiple repositories that are organised in a certain way and you want to run status checks for a certain set of repos, but not necessarily all the repos in a single set are under one single directory. If so, this earlier thread seems similar to what you want and it seems there I suggested exactly what you are doing, but now I see that the code unconditionally loads the primary `~/.mrconfig` file. So, until a better way to do this gets added, I think what you need is to rename `~/.mrconfig` to `~/.mrconfig-global`, make it include your other mr config files, and then use `-c ~/.mrconfig-global` but when you want a different set of repos, you can use `-c` with the mr config file for the other set. Instead of using `-c`, you could also make `~/.mrconfig` a symlink to a mr config file for your \"current\" subset of repos.
+
+https://myrepos.branchable.com/forum/How_to_work_on_a_specific_subset_of_repos__63__/
+"""]]

diff --git a/doc/forum/skip___126____47__.mrconfig.mdwn b/doc/forum/skip___126____47__.mrconfig.mdwn
new file mode 100644
index 0000000..e281433
--- /dev/null
+++ b/doc/forum/skip___126____47__.mrconfig.mdwn
@@ -0,0 +1,12 @@
+I have several mr configurations in different directories (this helps me to synchronize groups of repositories gradually).
+In `man mr`, it is stated
+
+    --config mrconfig
+           Use the specified mrconfig file. The default is to use both ~/.mrconfig as well as look for a .mrconfig file in the
+           current directory, or in one of its parent directories."
+
+How can I skip checking all repositories in ~/.mrconfig if I explicitly ask to use another config? I managed to solve that with `-n` option, like
+
+    mr -c mrconfig -t -n 1 status
+
+but `-n 1` looks a bit redundant and wrong for such case (I know that I can skip the *-t* flag with .mrtrust).

add multi-gitter to existing projects
Not sure where I found this, but it seems relevant here. Still not at
feature parity with myrepos, but pretty interesting nonetheless,
especially to coordinate Pull Requests against large multi-repos
projects.
diff --git a/doc/index.mdwn b/doc/index.mdwn
index c338b2a..018ef0d 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -95,6 +95,7 @@ Some more examples of things it can do include:
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [mgitstatus](https://github.com/fboender/multi-git-status): show status in multiple git repos
 * [mani](https://manicli.com/): manage multiple repositories, tasks, tags, YAML config, golang
+* [multi-gitter](https://github.com/lindell/multi-gitter): run command and commit, manipulates pull requests, YAML config, tightly bound to forges (GitHub, GitLab, Gitea)
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
 * [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool

yes, another one
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 3880656..c338b2a 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -85,6 +85,7 @@ Some more examples of things it can do include:
 ## related software
 
 * [garden](https://github.com/davvid/garden/): manage git project dependencies and worktrees, custom commands
+* [gfold](https://github.com/nickgerace/gfold): lists status of multiple repositories, readonly, config file, rust
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [git-repo-updater](https://github.com/earwig/git-repo-updater) gitup: update multiple git repos at once

add mani, yet another related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 8446e0a..3880656 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -93,6 +93,7 @@ Some more examples of things it can do include:
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [mgitstatus](https://github.com/fboender/multi-git-status): show status in multiple git repos
+* [mani](https://manicli.com/): manage multiple repositories, tasks, tags, YAML config, golang
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
 * [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool

sort related software alphabetically
It seems we weren't really sorting that in any meaningful
way. It *seems* we were incrementally adding new projects as we were
finding them, but that seems like a rather incoherent approach,
because it doesn't really reflect the value of any of those projects,
or even when they were created (or updated?) last, which would be more
relevant information.
diff --git a/doc/index.mdwn b/doc/index.mdwn
index caad4b3..8446e0a 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -84,26 +84,26 @@ Some more examples of things it can do include:
 
 ## related software
 
-* [repo](https://android.googlesource.com/tools/repo): git repository management tool
-* [gita](https://github.com/nosarthur/gita): manage multiple git repos
-* [gitbatch](https://github.com/isacikgoz/gitbatch): manage multiple git repos in one place
+* [garden](https://github.com/davvid/garden/): manage git project dependencies and worktrees, custom commands
+* [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [git-repo-updater](https://github.com/earwig/git-repo-updater) gitup: update multiple git repos at once
-* [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
+* [gita](https://github.com/nosarthur/gita): manage multiple git repos
+* [gitbatch](https://github.com/isacikgoz/gitbatch): manage multiple git repos in one place
+* [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
+* [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [mgitstatus](https://github.com/fboender/multi-git-status): show status in multiple git repos
-* [ghq](https://github.com/motemen/ghq): manage remote repository clones
+* [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
+* [repo](https://android.googlesource.com/tools/repo): git repository management tool
+* [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool
+* [silver-platter](https://www.jelmer.uk/silver-platter-intro.html): make automated changes in different version control repositories
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories
-* [kas](https://github.com/siemens/kas): bitbake repository management tool
+* [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper
 * [VCS](https://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
+* [vcs-repo-mgr](https://github.com/xolox/python-vcs-repo-mgr): version control repository manager
 * [vcstool](https://github.com/dirk-thomas/vcstool): work with multiple repositories
 * [vcstools](https://github.com/vcstools/vcstools): Python API wrapping version control systems
-* [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool
 * [wstool](https://github.com/vcstools/wstool): maintain workspace of projects from multiple VCSes
-* [vcs-repo-mgr](https://github.com/xolox/python-vcs-repo-mgr): version control repository manager
-* [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
-* [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper
-* [silver-platter](https://www.jelmer.uk/silver-platter-intro.html): make automated changes in different version control repositories
-* [garden](https://github.com/davvid/garden/): manage git project dependencies and worktrees, custom commands
 
 ## news
 

diff --git a/doc/forum/Support_for_XDG__95__CONFIG__95__HOME_would_be_nice.mdwn b/doc/forum/Support_for_XDG__95__CONFIG__95__HOME_would_be_nice.mdwn
new file mode 100644
index 0000000..aba81b2
--- /dev/null
+++ b/doc/forum/Support_for_XDG__95__CONFIG__95__HOME_would_be_nice.mdwn
@@ -0,0 +1,2 @@
+In addition to the locations checked for .mrconfig, it would be nice to have mr check for an XDG compliant path. This should ideally be ${XDG_CONFIG_HOME}/mr/config.
+When using the XDG Base Directory user directories, it helps to keep the home directory clean and navigable.

Add garden to the list of related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index ef4c1ff..caad4b3 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -103,6 +103,7 @@ Some more examples of things it can do include:
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
 * [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper
 * [silver-platter](https://www.jelmer.uk/silver-platter-intro.html): make automated changes in different version control repositories
+* [garden](https://github.com/davvid/garden/): manage git project dependencies and worktrees, custom commands
 
 ## news
 

comment
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_6_7d861e97258c076b5e2cc21886496e66._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_6_7d861e97258c076b5e2cc21886496e66._comment
new file mode 100644
index 0000000..49f2c87
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_6_7d861e97258c076b5e2cc21886496e66._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2020-12-31T17:19:39Z"
+ content="""
+The --stats option adds an output at the end like:
+
+	mr update: finished (2 failed)
+	mr update: (failed: src/foo src/bar)
+
+The name of this option could be better, the mnemonic
+for it is that it *expands* the normal stats output
+with more detail.
+"""]]

Added a comment: git-mergify-rebase
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_5_9f60dfb65223759b287678681584a77b._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_5_9f60dfb65223759b287678681584a77b._comment
new file mode 100644
index 0000000..772c85d
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_5_9f60dfb65223759b287678681584a77b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="git-mergify-rebase"
+ date="2020-12-21T23:34:00Z"
+ content="""
+Another option for rebasing is [git-mergify-rebase](https://github.com/CTSRD-CHERI/git-mergify-rebase).
+"""]]

Added a comment: git knows the upstream branch
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_4_7ecbd6d63cdc12ad143ffac37f51ee58._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_4_7ecbd6d63cdc12ad143ffac37f51ee58._comment
new file mode 100644
index 0000000..2164943
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_4_7ecbd6d63cdc12ad143ffac37f51ee58._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="git knows the upstream branch"
+ date="2020-12-21T11:49:47Z"
+ content="""
+git stores the upstream branch and it has shortcuts `@{u}`, `@{upstream}`, `HEAD{u}`, `HEAD{upstream}`, `sandbox/vrubiolo/devel{u}`, `sandbox/vrubiolo/devel{upstream}`, see the [gitrevisions(7)](https://git-scm.com/docs/gitrevisions) manual page for details. The git-rebase-all script mentioned above uses the `@{u}` shortcut in order to avoid having to look up the upstream branch.
+"""]]

Added a comment
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_3_b8cab7cc6200c35df21ce0e904d834f5._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_3_b8cab7cc6200c35df21ce0e904d834f5._comment
new file mode 100644
index 0000000..e3c182c
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_3_b8cab7cc6200c35df21ce0e904d834f5._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="vrubiolo"
+ avatar="http://cdn.libravatar.org/avatar/e792d7730dbeb8190eb281016bac2786"
+ subject="comment 3"
+ date="2020-12-21T09:19:55Z"
+ content="""
+Hi Paul,
+
+Thanks for your answer and for all the good suggestions esp. on the tooling side for `git-imerge` and `mergify`. Your suggestion to start a shell (I am not using `-j`) is indeed an excellent one, as I will need to fix the rebase in one way or the other (so doing it right as the repos are processed is a good idea).
+
+On the rebase side, your `git-rebase-all` script is also a good suggestion. I am looking into ways to do automated rebases on different branches: say that I am working on `sandbox/vrubiolo/devel` which is branched off `origin/devel` (but has a remote on `origin/sandbox/vrubiolo/devel` so that I can push daily to backup my work), I want to rebase `sandbox/vrubiolo/devel` every morning on the new state of `origin/devel`. Right now, I need to store the `origin/devel` pointer in an array to know which branch I should rebase against. Is there a better way in your case?
+
+Thanks again for your prompt replies!
+"""]]

Added a comment: ~/.mrcache
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_2_ec9a745c14768e5152e44370d3e4e68b._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_2_ec9a745c14768e5152e44370d3e4e68b._comment
new file mode 100644
index 0000000..e7b34d8
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_2_ec9a745c14768e5152e44370d3e4e68b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="~/.mrcache"
+ date="2020-12-19T00:17:40Z"
+ content="""
+PS: when looking at the mrepos cache, please note that the mr_output files contain terminal escape sequences for colour etc. You can use ansi2txt from [colorized-logs](https://github.com/kilobyte/colorized-logs) to strip out the terminal escape sequences.
+"""]]

Added a comment: available workarounds
diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_1_1fa055317f1a84ffeebf67321f8858df._comment b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_1_1fa055317f1a84ffeebf67321f8858df._comment
new file mode 100644
index 0000000..f7749cb
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos/comment_1_1fa055317f1a84ffeebf67321f8858df._comment
@@ -0,0 +1,33 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="available workarounds"
+ date="2020-12-19T00:14:22Z"
+ content="""
+Hi Vincent, glad you like myrepos :)
+
+Personally, I think the right way to deal with your situation is for each failing rebase to spawn a shell for each failure, unless you use -j, but if you do use -j you could spawn an xterm instead of a shell. Right now I am using a [git-rebase-all](https://paste.debian.net/plain/1177538) script I wrote for this purpose, you could adapt it to your situation.
+
+BTW, if you have long-running branches that often have rebase failures, I suggest using [git-imerge](https://github.com/mhagger/git-imerge) and or [mergeify](https://github.com/brooksdavis/mergify). They make rebasing much easier by bisecting your rebase failures and then letting you rebase over the exact commit causing the rebase failure, splitting the rebase up into several much smaller rebases that you can incrementally solve. I've only used git-imerge, it has a bit of a learning curve, but once you get used to it, it becomes invaluable for this use-case.
+
+Without using git-rebase-all and without any changes to the myrepos code, there are two possible ways you can do what you asked for:
+
+Use the \"offline\" mode, which records what commands failed so you can run them again when online. First you turn on \"offline\" mode, then run the rebase command, (optionally) inspect the log of failed commands and then re-run only the failed commands. The offline mode is mainly meant for `mr fetch` but it works for any situation where you want to log failed commands.
+
+```
+mr offline
+mr rebase
+cat ~/.mrlog
+mr online
+```
+
+Use the --cache option and then inspect the cache after myrepos has run. The cache contains separate files for both the command exit code and the text output of each repository. So you can run the rebase in cache mode and then inspect the cache of the rebase command return codes. Something like this should print the list of dirs (relative to your $HOME dir) where the rebase failed:
+
+```
+mr --cache rebase
+find ~/.mrcache/rebase/ -name mr_ret -print0 |
+xargs -0 grep -lvF 0 |
+sed 's/mr_ret//' | 
+sed 's@^$HOME/.mrcache/rebase/$HOME@~@'
+```
+"""]]

diff --git a/doc/forum/Better_reporting_of_action_status_over_all_repos.mdwn b/doc/forum/Better_reporting_of_action_status_over_all_repos.mdwn
new file mode 100644
index 0000000..c690374
--- /dev/null
+++ b/doc/forum/Better_reporting_of_action_status_over_all_repos.mdwn
@@ -0,0 +1,15 @@
+Hi,
+
+Thank you very much for myrepos, it is really a great tool which I have integrated in my daily workflow and which improved my productivity a lot!
+
+I am successfully using it for ~100 repos (both personal and community-based) and one thing that I am trying to achieve is better reporting of the overall status of an action. For instance, I do an `mr rebase` at the root of my account and it will rebase all my personal branches against their main ones. This sometimes fails though and myreports `mr rebase: finished (115 ok, 3 failed)`
+
+The problem is that I now have to scroll up through the long output to find which repos failed w/ their rebase. I would like myrepos to report the directory/repo paths into which there was a problem but I have not found a way to do that. Each `rebase` action runs in its own shell and I don't have an easy way to transfer the state (failed or not) into a global variable that myrepos could check. The closest I can think of is to put those failed paths into an exported shell variable that a wrapper script running myrepos would check at the end.
+
+Looking into the myrepos source, I don't see an easy way here (the `showstats()` routine uses counters for `ok/failed/skipped`, but does not appear to store repo paths there).
+
+Is there a way to achieve what I want here?
+
+Thanks much for your help!
+
+Vincent

Add multi-git-status to the list of related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index e4fdaeb..ef4c1ff 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -90,6 +90,7 @@ Some more examples of things it can do include:
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [git-repo-updater](https://github.com/earwig/git-repo-updater) gitup: update multiple git repos at once
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
+* [mgitstatus](https://github.com/fboender/multi-git-status): show status in multiple git repos
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories
 * [kas](https://github.com/siemens/kas): bitbake repository management tool

Added a comment: I would use restic/borg instead
diff --git a/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_2_b57a24bca774837661ba0e6fbd62ce93._comment b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_2_b57a24bca774837661ba0e6fbd62ce93._comment
new file mode 100644
index 0000000..374121e
--- /dev/null
+++ b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_2_b57a24bca774837661ba0e6fbd62ce93._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="I would use restic/borg instead"
+ date="2020-08-23T01:07:02Z"
+ content="""
+Personally I would do backups using a regular backup tool like restic or borg. This way you also backup the git config for each repository and any uncommitted changes or modifications to the index and you also get history of those things. Just using git bundle like that will miss those things.
+
+BTW: my use of the mr backup command is per-repository and I use it to rsync remote repos locally. I then backup those with restic.
+
+    [repos/chromium-bsu]
+    checkout = git clone 'https://git.code.sf.net/p/chromium-bsu/code' 'code'
+    backup = rsync --archive --compress --hard-links --delete --copy-unsafe-links git.code.sf.net::p/chromium-bsu/ ~/backup/repos/chromium-bsu/
+"""]]

Added a comment: Possible solution
diff --git a/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_1_24359afb58abb8865829e88ca9c933f8._comment b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_1_24359afb58abb8865829e88ca9c933f8._comment
new file mode 100644
index 0000000..f3cdb53
--- /dev/null
+++ b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__/comment_1_24359afb58abb8865829e88ca9c933f8._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="benedikt.ahrens@cf5973f8fa2626d8a2f6d50bfaebd3f3cc6301d3"
+ nickname="benedikt.ahrens"
+ avatar="http://cdn.libravatar.org/avatar/19c32cb4717d27ee6c4dda8bf3c80716"
+ subject="Possible solution"
+ date="2020-08-22T19:34:58Z"
+ content="""
+It took me a while, but for now I have found
+
+```
+[DEFAULT]
+backup = git bundle create /path/to/backupdir/$(basename $(git rev-parse --show-toplevel)).gitrepo --all
+```
+If anybody has any comments on how to improve this, please let me know.
+Thanks,
+Benedikt
+"""]]

diff --git a/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__.mdwn b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__.mdwn
new file mode 100644
index 0000000..70a4de7
--- /dev/null
+++ b/doc/forum/How_to_use_myrepos_to_backup_git_repositories__63__.mdwn
@@ -0,0 +1,5 @@
+I am wondering if/how myrepos can be used to backup all (git) repositories under its control. By "backup", I mean
+1. for every repository, zip up the repository data (ie, the `.git` subdir) into a file named `repository_name_<timestamp>.zip` (or tgz or whatever).
+2. move that zip file into a globally specified directory (same for all repositories)
+
+Is there something already prepared that I can use?

Add git-repo-updater gitup to the list of related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 70c67ab..e4fdaeb 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -88,6 +88,7 @@ Some more examples of things it can do include:
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
 * [gitbatch](https://github.com/isacikgoz/gitbatch): manage multiple git repos in one place
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
+* [git-repo-updater](https://github.com/earwig/git-repo-updater) gitup: update multiple git repos at once
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories

Remove test of the forum
diff --git a/doc/forum/this_is_a_test.mdwn b/doc/forum/this_is_a_test.mdwn
deleted file mode 100644
index 7b86167..0000000
--- a/doc/forum/this_is_a_test.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-I'm testing
-
-
-and another tyest
diff --git a/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment b/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment
deleted file mode 100644
index 77e424a..0000000
--- a/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="pabs3@49c776417680694a0f3295ee80df4edfca300096"
- nickname="pabs3"
- avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
- subject="a test"
- date="2020-04-23T22:59:53Z"
- content="""
-more testing
-"""]]

Added a comment: no easy way to do this yet
diff --git a/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__/comment_1_82957cc4d2c4bdbe0a0e20bd709c0c79._comment b/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__/comment_1_82957cc4d2c4bdbe0a0e20bd709c0c79._comment
new file mode 100644
index 0000000..9bb5e7a
--- /dev/null
+++ b/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__/comment_1_82957cc4d2c4bdbe0a0e20bd709c0c79._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="no easy way to do this yet"
+ date="2020-04-30T11:42:15Z"
+ content="""
+I can see how tag based classification of repos would be really useful and I would welcome a patch for that, but until someone writes it, there is no easy way to do this, especially if the subsets overlap. For now the best option is to split each subset out into a separate .mrconfig-foo config and have your global .mrconfig file include all the subsets. If your subsets overlap then keep each config file separate without includes. Then when you want to run on a subset, you simply tell mr to use the config file for that subset.
+
+
+"""]]

diff --git a/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__.mdwn b/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__.mdwn
new file mode 100644
index 0000000..113bfb2
--- /dev/null
+++ b/doc/forum/How_to_work_on_a_specific_subset_of_repos__63__.mdwn
@@ -0,0 +1,25 @@
+I often want to run a specific operation on a fixed subset of repos.
+The operation itself is valid for all repos, just I usually don't want to run it when I am doing specific tasks.
+E.g. when I am working on TaskA, I only want the operation to run on repo1 and repo3, whereas when I am running TaskB
+I want to run them on repo2 and repo3.
+
+Is there some way to preselect a (potentially large) list of repos to run an operation on?
+Ideally, I would imaging to add some kind of tags or labels on the repos section so it is specific to the repo
+and not coded in the operation itself and then have mr select the repos with the specific tags?
+
+E.g. something like this pseudo code
+
+    cat .mrconfig
+    [repo1]
+    tag = TaskA
+    
+    [repo2]
+    tag = TaskB
+    
+    [repo3]
+    tag = TaskA TaskB
+
+and then run the update operation with something like
+
+    mr --select-repos-with-tags=TaskA  update
+

Added a comment: forum fixed
diff --git a/doc/todo/Failure_message_when_nothing_to_commit/comment_2_1424aacec18b5585b7653f121d644f9d._comment b/doc/todo/Failure_message_when_nothing_to_commit/comment_2_1424aacec18b5585b7653f121d644f9d._comment
new file mode 100644
index 0000000..ef0c050
--- /dev/null
+++ b/doc/todo/Failure_message_when_nothing_to_commit/comment_2_1424aacec18b5585b7653f121d644f9d._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="pabs3@49c776417680694a0f3295ee80df4edfca300096"
+ nickname="pabs3"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="forum fixed"
+ date="2020-04-23T23:04:20Z"
+ content="""
+The forum has been fixed, thanks for reporting that.
+"""]]

Add a news item about the forum being fixed
diff --git a/doc/news/forum-fixed.mdwn b/doc/news/forum-fixed.mdwn
new file mode 100644
index 0000000..94b815b
--- /dev/null
+++ b/doc/news/forum-fixed.mdwn
@@ -0,0 +1,9 @@
+The forum wasn't working due to incorrect ikiwiki settings.
+The settings have been fixed and the forum is now working!
+
+If you have a topic to discuss, jump on the forum and
+share your myrepos config, tips, tricks or questions.
+
+Thanks to Mat for letting us know about this.
+
+[[!meta author=pabs]]

Added a comment: a test
diff --git a/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment b/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment
new file mode 100644
index 0000000..77e424a
--- /dev/null
+++ b/doc/forum/this_is_a_test/comment_1_5de8d067545e0784547fe3c81239fb81._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="pabs3@49c776417680694a0f3295ee80df4edfca300096"
+ nickname="pabs3"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="a test"
+ date="2020-04-23T22:59:53Z"
+ content="""
+more testing
+"""]]

diff --git a/doc/forum/this_is_a_test.mdwn b/doc/forum/this_is_a_test.mdwn
index 3c4a259..7b86167 100644
--- a/doc/forum/this_is_a_test.mdwn
+++ b/doc/forum/this_is_a_test.mdwn
@@ -1 +1,4 @@
 I'm testing
+
+
+and another tyest

test
diff --git a/doc/forum/this_is_a_test.mdwn b/doc/forum/this_is_a_test.mdwn
new file mode 100644
index 0000000..3c4a259
--- /dev/null
+++ b/doc/forum/this_is_a_test.mdwn
@@ -0,0 +1 @@
+I'm testing

Fix my comment up a bit
diff --git a/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment b/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment
index f2e6025..dff41cc 100644
--- a/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment
+++ b/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment
@@ -4,12 +4,17 @@
  subject="try setting the commit/record commands for those directories"
  date="2020-04-23T22:40:58Z"
  content="""
-I'm not sure myrepos should be in the business of ignoring failure of VCS commands generally. I think the right way to go for this is for you to override the commit/record commands for the repositories you want this feature in, or for the parent directory if the repositories are in one directory or for all repositories if you don't have any where you do snapshots.
-
+I'm not sure myrepos should be in the business of ignoring failure of VCS commands generally. I think the right way to go for this is for you to override the commit/record commands for the repositories you want this feature in, or for the parent directory if the repositories are in one directory or for all repositories if you don't have any where you don't do snapshots.
 
+    # For just the current repository
     mr config \"$(pwd)\" commit='git commit -a && git push --all || true'
     mr config \"$(pwd)\" record='git commit -a || true'
 
+    # For all the repos in a parent dir
+    mr config ~/path/to/snapshot/parent/dir commit='git commit -a && git push --all || true'
+    mr config ~/path/to/snapshot/parent/dir record='git commit -a || true'
+
+    # For changing the default mr commit command for git
     mr config DEFAULT git_commit='git commit -a && git push --all || true'
     mr config DEFAULT git_record='git commit -a || true'
 

Added a comment: try setting the commit/record commands for those directories
diff --git a/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment b/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment
new file mode 100644
index 0000000..f2e6025
--- /dev/null
+++ b/doc/todo/Failure_message_when_nothing_to_commit/comment_1_029161137e8acd5ca4259c64ec239e74._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="try setting the commit/record commands for those directories"
+ date="2020-04-23T22:40:58Z"
+ content="""
+I'm not sure myrepos should be in the business of ignoring failure of VCS commands generally. I think the right way to go for this is for you to override the commit/record commands for the repositories you want this feature in, or for the parent directory if the repositories are in one directory or for all repositories if you don't have any where you do snapshots.
+
+
+    mr config \"$(pwd)\" commit='git commit -a && git push --all || true'
+    mr config \"$(pwd)\" record='git commit -a || true'
+
+    mr config DEFAULT git_commit='git commit -a && git push --all || true'
+    mr config DEFAULT git_record='git commit -a || true'
+
+I'll look into fixing the forum, thanks for reporting that.
+"""]]

diff --git a/doc/todo/Failure_message_when_nothing_to_commit.mdwn b/doc/todo/Failure_message_when_nothing_to_commit.mdwn
new file mode 100644
index 0000000..0071cc9
--- /dev/null
+++ b/doc/todo/Failure_message_when_nothing_to_commit.mdwn
@@ -0,0 +1,7 @@
+This is more of an annoyance than a bug: I've got multiple Git repos that I want to snapshot and push to back them up, so I run `mr commit -m "Snapshot $(date)"`.  When there is nothing to commit in one of the repos, I get `mr commit: command failed`.  Is there something I can do to make that not be considered a failure?
+
+Thanks,
+-Mat
+
+
+By the way, I hope this is the right place to report these things.  I tried the Forums page but Branchable reported that it was locked.

bug report
diff --git a/doc/todo/seemingly_unncessary_stat_of_all_repos_can_cause_unexpected_hang.mdwn b/doc/todo/seemingly_unncessary_stat_of_all_repos_can_cause_unexpected_hang.mdwn
new file mode 100644
index 0000000..05cbcd1
--- /dev/null
+++ b/doc/todo/seemingly_unncessary_stat_of_all_repos_can_cause_unexpected_hang.mdwn
@@ -0,0 +1,16 @@
+I had a mr commit in /etc hang. Investigation showed it was trying to stat
+a path under /media/, to a drive that had automount enabled, but which
+happened to have its USB port turned off to save power. In this situation,
+any access to the drive's mountpoint can take several minutes for the
+automount to time out before it fails.
+
+It seems unncessary for mr run in /foo to cause mr to stat repos in /bar
+that it's not going to be working in. I don't think it's worth going to major
+lengths to avoid, eg if a repo has chain=true then it's reasonable for mr
+to want to read its mrconfig at startup along with all the rest. But this
+repo in /media did not have chain=true, it was just an unrelated repo to
+the one mr was going to operate in.
+
+Tracked the stat to the use of `safe_abs_path` in `loadconfig`.
+
+--[[Joey]]

Add github2mr to the list of myrepos extensions
See-also: https://blog.steve.fi/exporting_github_repositories_to_myrepos.html
See-also: https://blog.steve.fi/announce__github2mr.html
diff --git a/doc/index.mdwn b/doc/index.mdwn
index ba083ae..70c67ab 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -80,6 +80,7 @@ Some more examples of things it can do include:
 
 * [drupal](https://github.com/wimleers/mr-drupal): simple way to manage drupal websites
 * [freeze](https://bitbucket.org/mforbes/mmfhg#rst-header-mr-un-freeze): record and restore VCS revision details
+* [github2mr](https://github.com/skx/github2mr): add your github repos to myrepos
 
 ## related software
 

Switch URLs from http to https where possible
https URLs are more secure.
Suggested-by: check-all-the-things
diff --git a/doc/index.mdwn b/doc/index.mdwn
index faf5d9b..ba083ae 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -91,7 +91,7 @@ Some more examples of things it can do include:
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
-* [VCS](http://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
+* [VCS](https://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
 * [vcstool](https://github.com/dirk-thomas/vcstool): work with multiple repositories
 * [vcstools](https://github.com/vcstools/vcstools): Python API wrapping version control systems
 * [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool
diff --git a/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers.mdwn b/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers.mdwn
index b675a12..066c43f 100644
--- a/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers.mdwn
+++ b/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers.mdwn
@@ -1,4 +1,4 @@
-4 years ago, I created <https://github.com/wimleers/mr-drupal>. It still works great. I wrote about it at <http://wimleers.com/article/mr-drupal>.
+4 years ago, I created <https://github.com/wimleers/mr-drupal>. It still works great. I wrote about it at <https://wimleers.com/article/mr-drupal>.
 
 But this is very hard to discover.
 
diff --git a/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment b/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment
index 700a40e..e42b749 100644
--- a/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment
+++ b/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment
@@ -9,7 +9,7 @@ I am by no way a command line expert, but I was unable to get the sort-ini metho
 
 A couple of paragraphs down the original example is labeled \"Robbins' awk based shell pipeline\"
  
-http://homepage.smc.edu/morgan_david/linadmin/labs/sort-multiline-blocks.htm
+https://homepage.smc.edu/morgan_david/linadmin/labs/sort-multiline-blocks.htm
 
 From there I came to this
 
diff --git a/lib/dgit b/lib/dgit
index ec55f56..fcd3894 100644
--- a/lib/dgit
+++ b/lib/dgit
@@ -13,7 +13,7 @@
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 #
 # Maintainer: Sean Whitton <spwhitton@spwhitton.name>
 

Added a comment
diff --git a/doc/todo/ControlMaster/comment_8_211af62c869466d5fe456e07c24ab191._comment b/doc/todo/ControlMaster/comment_8_211af62c869466d5fe456e07c24ab191._comment
new file mode 100644
index 0000000..5695f4a
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_8_211af62c869466d5fe456e07c24ab191._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="comment 8"
+ date="2019-10-27T02:15:24Z"
+ content="""
+My git_fetch is just a workaround for something that IMO belongs in git itself that I haven't gotten around to implementing in a way that would be acceptable to git upstream. I have a branch that implements what I wanted, but it got rejected upstream and I never got around to figuring out a way forward:
+
+https://github.com/pabs3/git/commits/minimal-output
+https://public-inbox.org/git/1445741384-30828-1-git-send-email-pabs3@bonedaddy.net/
+
+Personally, I think in many instances `git pull` should be deprecated in favour of `git fetch` plus reviewing the incoming changes from upstream and then if appropriate fast-forwarding/rebasing/merging branches and fixing any issues. The obvious exception is upstreams that move so fast that review is not possible (like Linux) or people who have way too many repos checked out like me :)
+
+The default `mr update` just runs `git pull`, which allegedly \"is shorthand for git fetch followed by git merge FETCH_HEAD\" according to the docs. Unfortunately `git pull` doesn't seem to respect the `alias.fetch` config and I don't see any other config option to make git update/fetch pull from all remotes. We could change `mr update` to run `git pull --all` instead I guess, not sure if there are any downsides to that apart from the behaviour change...
+"""]]

Added a comment: thanks!
diff --git a/doc/todo/ControlMaster/comment_7_3242281b289ab31b55c1d44e919fd3e7._comment b/doc/todo/ControlMaster/comment_7_3242281b289ab31b55c1d44e919fd3e7._comment
new file mode 100644
index 0000000..549a666
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_7_3242281b289ab31b55c1d44e919fd3e7._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="anarcat"
+ avatar="http://cdn.libravatar.org/avatar/b486931ea9d27c0cc41a4e9e4daccb7c"
+ subject="thanks!"
+ date="2019-10-25T15:25:27Z"
+ content="""
+thanks for all the advice, pabs and joeyh! :)
+
+joeyh: I suspected there was a lot more to it, and considering what I know of Haskell, I suspect 400 LOC in Haskell would translate into something much more complex in myrepos. :p
+
+pabs: neat trick! couldn't this be merged straight into mr though? it seems you have reimplemented most of the mr functions in your .mrconfig now. :)
+
+also, now that I switched to `fetch`, i keep up stumbling upon the issue that i have to rerun update everywhere to get the changes... couldn't there be a way to run update (with `--ff-only` maybe) *and* fetch at once? in other words, why doesn't `update` fetch changes from all remotes?
+"""]]

comment
diff --git a/doc/todo/ControlMaster/comment_6_21704b4357765ef19805b43ad4bd59cd._comment b/doc/todo/ControlMaster/comment_6_21704b4357765ef19805b43ad4bd59cd._comment
new file mode 100644
index 0000000..e079b4b
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_6_21704b4357765ef19805b43ad4bd59cd._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2019-10-20T17:50:20Z"
+ content="""
+git-annex contains a robust implementation of this in Annex/Ssh.hs.
+It's nontrivial; my implementation is over 400 LoC.
+
+Some other complications that may or may not have been discussed:
+
+* The path to a unix socket is limited to around 100 bytes,
+  so using the full server name in the socket name will sometimes fail.
+* Multiple password prompting has to be avoided when there's concurrency.
+  This and ssh failing on a socket that is not yet connected can both be
+  dealt with by locking until a connection is set up, running a dummy
+  command like "true" has to be run over ssh to know when the connection is
+  up.
+"""]]

Added a comment
diff --git a/doc/todo/ControlMaster/comment_5_d6a858f29224cb8685a1ac504e218571._comment b/doc/todo/ControlMaster/comment_5_d6a858f29224cb8685a1ac504e218571._comment
new file mode 100644
index 0000000..8905036
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_5_d6a858f29224cb8685a1ac504e218571._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="comment 5"
+ date="2019-10-18T15:10:35Z"
+ content="""
+About the TOFU issue, agreed that is better for security. I switched away because my `ControlMaster autoask` at the time was very annoying during `mr fetch`. On alioth I had an SSH key for read-only git access with no prompt and a key for read-write git access with a prompt, but that doesn't appear to be supported by gitlab/etc. I probably should rethink how to do this more optimally at some point.
+
+For the git fetch issue, you could do something like what I do here to make `mr -m fetch` not print things for remotes that don't have any changes and skip remotes that I disabled fetching from because they are gone now. Then just add any checks you want; if the remote is a USB stick and the path doesn't exist, skip the remote. You could also just make a git_fetchorigin command to only fetch one remote.
+
+```
+# work around git annoyance with mr -m fetch
+git_fetch =
+        git remote |
+                while read -r remote ; do
+                        if [ xtrue != \"x$(git config --bool \"remote.$remote.skipFetchAll\")\" ] ; then
+                                git fetch \"$remote\"
+                                git fetch --tags \"$remote\"
+                        fi
+                done
+```
+"""]]

Added a comment
diff --git a/doc/todo/ControlMaster/comment_4_9614cbe750f552434edc6a4b789786c0._comment b/doc/todo/ControlMaster/comment_4_9614cbe750f552434edc6a4b789786c0._comment
new file mode 100644
index 0000000..a08d496
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_4_9614cbe750f552434edc6a4b789786c0._comment
@@ -0,0 +1,77 @@
+[[!comment format=mdwn
+ username="anarcat"
+ avatar="http://cdn.libravatar.org/avatar/b486931ea9d27c0cc41a4e9e4daccb7c"
+ subject="comment 4"
+ date="2019-10-18T14:50:54Z"
+ content="""
+> I've worked to getting most of my remote repos over https instead of SSH. This is mainly because I have a prompt for each use of my SSH keys, but also helps with this problem.
+
+My [wrapper script](https://gitlab.com/anarcat/scripts/raw/master/sync-boxes) takes care of that: it makes sure SSH works first...
+
+But it's true I might have better performance over HTTPS, I guess. It's just that I like the idea of pulling everything over SSH: I have a solid TOFU there that I don't have over HTTPS... And since this is an automated process, I really prefer to have that solid trust path in place. Plus setting up each push/pull URL is annoying, although there are nice ways around that, as you said...
+
+> Instead of configuring ControlMaster for all SSH connections, you could also just configure it for the hosts that you can only use git with (I'm thinking github.com/etc).
+>
+> I suggest putting SSH sockets in $XDG_RUNTIME_DIR instead of HOME, so you never get stale sockets after reboot and never get backup programs looking at sockets (some do).
+
+Excellent suggestions, thanks!
+
+> To be honest I'm not sure how myrepos could selectively enable ControlMaster for commands it runs. The only thing I can think of would be to modify PATH to add a script that runs the real ssh with additional options, but that seems pretty hacky.
+
+Well, what I was thinking of is that etckeeper is the one that calls the git processes ultimately, so it could do some magic with `GIT_SSH_COMMAND` for example... It's VCS-specific of course... :/
+
+> Either way, if ControlMaster provides very little improvement for you, adding it via myrepos instead of via the SSH config isn't going to change that.
+
+I guess I would first need to figure out *that* part of course. ;)
+
+> PS: I only ever do mr -j10 fetch and I leave updating branches to interactive shells where I can deal with any conflicts manually.
+
+That's also a good point, I always forget about `fetch`, thanks!
+
+One of the problems i have with `fetch` though is that it pulls *all* remotes that are configured. In some cases, those refer to USB keys or non-existent, transient repos... For example, I have this in one repo:
+
+    anarcat@angela:calendes(master)$ git rv
+    origin	anarc.at:/var/www/calendes (fetch)
+    origin	anarc.at:/var/www/calendes (push)
+    sneakernet	/media/anarcat/KINGSTON/calendes/ (fetch)
+    sneakernet	/media/anarcat/KINGSTON/calendes/ (push)
+
+It fails with the following:
+
+    mr fetch: /home/anarcat/Pictures/calendes
+    Récupération de origin
+    Récupération de sneakernet
+    fatal: '/media/anarcat/KINGSTON/calendes/' does not appear to be a git repository
+    fatal: Impossible de lire le dépôt distant.
+
+This also makes `fetch` slower, as it fetches more remotes.
+
+> Perhaps by \"dispatch stuff much better\" you mean just to avoid the race condition?
+
+Well, what I would like would be to the process to be much faster. I am not sure it's possible at all! I figured that ControlMaster might help, but I stumbled upon the race condition, so maybe that's the first thing to solve. Maybe, even, that's a bug in the ssh client itself that should *never* run into such a race condition (it could easily *wait* just a bit for another process to setup the socket correctly when it's created, for example).
+
+Here's a new benchmark, with your `ControlPersist` setting. I still
+get those errors, unfortunately:
+
+    ControlSocket /run/user/1000/ssh-control-local-user@remote.example.com:22 already exists, disabling multiplexing
+
+... which feel more and more like a bug in SSH: if it exists, use it!
+If you can't use it, just wait! If you can't wait, just shut the hell
+up, no? :)
+
+Anyways, without the multiplexer:
+
+    13.45user 6.51system 2:10.01elapsed 15%CPU (0avgtext+0avgdata 44900maxresident)k
+    0inputs+14400outputs (0major+514164minor)pagefaults 0swaps
+
+And with the multiplexer:
+
+    8.75user 4.86system 1:48.98elapsed 12%CPU (0avgtext+0avgdata 44972maxresident)k
+    1760inputs+14000outputs (39major+474784minor)pagefaults 0swaps
+
+So it still shaves off a good 20 seconds, which is not negligible. But
+since I now use `fetch` instead of update, I'm actually back to square
+one, and get tons of warnings to go through. :p
+
+Can't help but think this is just a bug with ssh though...
+"""]]

Added a comment: dispatch stuff much better...
diff --git a/doc/todo/ControlMaster/comment_3_ed8b11ab449b98868db2097383f69154._comment b/doc/todo/ControlMaster/comment_3_ed8b11ab449b98868db2097383f69154._comment
new file mode 100644
index 0000000..f501ead
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_3_ed8b11ab449b98868db2097383f69154._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="dispatch stuff much better..."
+ date="2019-10-18T04:38:44Z"
+ content="""
+Perhaps by \"dispatch stuff much better\" you mean just to avoid the race condition? Grouping accesses to the same host isn't likely to improve speed, especially if it is an overloaded host you probably want to spread out accesses instead. For spreading accesses out, it isn't possible for myrepos to know what host(s) the command it runs will connect to, since that info is in the git config for each repo and the myrepos copy of that config could be out of date and would be missing non-origin remotes.
+"""]]

Added a comment
diff --git a/doc/todo/ControlMaster/comment_2_05f4d8be1ab4cd6e95bd9806a2f22983._comment b/doc/todo/ControlMaster/comment_2_05f4d8be1ab4cd6e95bd9806a2f22983._comment
new file mode 100644
index 0000000..990f19a
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_2_05f4d8be1ab4cd6e95bd9806a2f22983._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="comment 2"
+ date="2019-10-18T04:29:24Z"
+ content="""
+PS: I forgot to mention that I use https for the repo remote URLs and then I set the push URLs globally in `~/.gitconfig` like this:
+
+```
+[url \"ssh://github.com/\"]
+        pushInsteadOf = https://github.com/
+```
+"""]]

Added a comment: my approach
diff --git a/doc/todo/ControlMaster/comment_1_c4ff57e61405d4724dd6d8cf03ecea2b._comment b/doc/todo/ControlMaster/comment_1_c4ff57e61405d4724dd6d8cf03ecea2b._comment
new file mode 100644
index 0000000..f90f28a
--- /dev/null
+++ b/doc/todo/ControlMaster/comment_1_c4ff57e61405d4724dd6d8cf03ecea2b._comment
@@ -0,0 +1,26 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="my approach"
+ date="2019-10-18T04:27:19Z"
+ content="""
+I've worked to getting most of my remote repos over https instead of SSH. This is mainly because I have a prompt for each use of my SSH keys, but also helps with this problem.
+
+I'm using ControlMaster for all SSH connections, with some situations where I turn it off, and I find it works fairly well apart from the annoying race condition you mention during `mr fetch`. I use time-limited connections so I don't have SSH running forever.
+
+Instead of configuring ControlMaster for all SSH connections, you could also just configure it for the hosts that you can only use git with (I'm thinking github.com/etc).
+
+I suggest putting SSH sockets in $XDG_RUNTIME_DIR instead of HOME, so you never get stale sockets after reboot and never get backup programs looking at sockets (some do).
+
+```
+ControlMaster autoask
+ControlPath /run/user/%i/ssh-control-%l->%r@%h:%p
+ControlPersist 60
+```
+
+To be honest I'm not sure how myrepos could selectively enable ControlMaster for commands it runs. The only thing I can think of would be to modify PATH to add a script that runs the real `ssh` with additional options, but that seems pretty hacky.
+
+Either way, if ControlMaster provides very little improvement for you, adding it via myrepos instead of via the SSH config isn't going to change that.
+
+PS: I only ever do `mr -j10 fetch` and I leave updating branches to interactive shells where I can deal with any conflicts manually.
+"""]]

could multiplexing help with mr's performance?
diff --git a/doc/todo/ControlMaster.mdwn b/doc/todo/ControlMaster.mdwn
new file mode 100644
index 0000000..9660015
--- /dev/null
+++ b/doc/todo/ControlMaster.mdwn
@@ -0,0 +1,19 @@
+I have a ton of repos in my `~/.mrconfig`, so a full `mr update` takes a long time, even if parallelized. A lot of those remotes are on the same server, however, so I can't help but wonder if it would save time to enable `ControlMaster` from mr directly. I know I could set that up in my `~/.ssh/config` myself, but I'm not sure I feel comfortable setting that all for all use cases. If it would be done in mr, it could setup the multiplexer and tear it down when done...
+
+Here a full pull (`mr -j10 update`) takes:
+
+    30.39user 8.05system 1:51.04elapsed 34%CPU (0avgtext+0avgdata 73320maxresident)k
+    0inputs+15664outputs (0major+529937minor)pagefaults 0swaps
+
+One trick is that multiplexing might fail with `-j` because of a race condition that ssh doesn't seem to handle very well:
+
+    ControlSocket /home/anarcat/.ssh/control-master-747c83a00480de0860fde4d7df86be06fe25e555.sock already exists, disabling multiplexing
+
+That's with the following configuration:
+
+     ControlMaster auto
+     ControlPath ~/.ssh/control-master-%C.sock
+
+So with that configuration, there's very little improvement, unfortunately. I would bet that, however, mr could be smarter than this and dispatch stuff much better...
+
+Thanks! -- [[anarcat]]

Add gitbatch to the list of related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 44015b1..faf5d9b 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -85,6 +85,7 @@ Some more examples of things it can do include:
 
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
+* [gitbatch](https://github.com/isacikgoz/gitbatch): manage multiple git repos in one place
 * [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones

Add silver-platter to the list of related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 727adfb..44015b1 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -98,6 +98,7 @@ Some more examples of things it can do include:
 * [vcs-repo-mgr](https://github.com/xolox/python-vcs-repo-mgr): version control repository manager
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
 * [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper
+* [silver-platter](https://www.jelmer.uk/silver-platter-intro.html): make automated changes in different version control repositories
 
 ## news
 

Fix markdown formatting typo: ] -> )
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 6478136..727adfb 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -85,7 +85,7 @@ Some more examples of things it can do include:
 
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
-* [git-plus](https://github.com/tkrajina/git-plus] multi: run commands in multiple git repos
+* [git-plus](https://github.com/tkrajina/git-plus) multi: run commands in multiple git repos
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
 * [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories

Added a comment: re: Allow symlinked directories
diff --git a/doc/todo/Allow_symlinked_directories/comment_4_bcdf040e86967750fb2132ce3d9e1565._comment b/doc/todo/Allow_symlinked_directories/comment_4_bcdf040e86967750fb2132ce3d9e1565._comment
new file mode 100644
index 0000000..2bf86e0
--- /dev/null
+++ b/doc/todo/Allow_symlinked_directories/comment_4_bcdf040e86967750fb2132ce3d9e1565._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="terrynbrown@5ea87878c9b9b78c5042c1c99c2bd387a2703633"
+ nickname="terrynbrown"
+ avatar="http://cdn.libravatar.org/avatar/870687a83f99c5885a6ac18bff762f28"
+ subject="re: Allow symlinked directories "
+ date="2019-02-12T19:07:47Z"
+ content="""
+I made a wrapper <https://github.com/tbnorth/mrls> to handle symlinks, it
+analyses ~/.mrconfig and generates output like:
+
+    N=47  mr -d /mnt/edata
+    N=2   mr -d /mnt/usr1
+    snnm pypanart drifters
+
+the first two lines being mr commands pointing to specific absolute paths
+you can copy paste to run on the relevant devices.
+
+The third line is a list of groups, I ended up adding the ability to define
+groups of repos. to manage together :-}
+
+"""]]

Add ghq to related software
This was discovered by anarcat.
diff --git a/doc/index.mdwn b/doc/index.mdwn
index e5709b3..6478136 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -87,6 +87,7 @@ Some more examples of things it can do include:
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
 * [git-plus](https://github.com/tkrajina/git-plus] multi: run commands in multiple git repos
 * [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
+* [ghq](https://github.com/motemen/ghq): manage remote repository clones
 * [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [VCS](http://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems

Added a comment: Symlinked Repos
diff --git a/doc/todo/Allow_symlinked_directories/comment_3_d8125cd41b5dc0726cac967dc324cafd._comment b/doc/todo/Allow_symlinked_directories/comment_3_d8125cd41b5dc0726cac967dc324cafd._comment
new file mode 100644
index 0000000..cbe7296
--- /dev/null
+++ b/doc/todo/Allow_symlinked_directories/comment_3_d8125cd41b5dc0726cac967dc324cafd._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="mforbes"
+ avatar="http://cdn.libravatar.org/avatar/e497ff9efad76394e98daa506ebc8fef"
+ subject="Symlinked Repos"
+ date="2019-02-08T19:22:34Z"
+ content="""
+Any Perl guru's able to fix this an allow symlinks to work again?
+"""]]

Add git-plus multi, mu-repo, uncommitted, wstool to related software
These were all discovered in the discussion about gita.
Discussion: https://news.ycombinator.com/item?id=19074170
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 285d20e..e5709b3 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -85,11 +85,15 @@ Some more examples of things it can do include:
 
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
 * [gita](https://github.com/nosarthur/gita): manage multiple git repos
+* [git-plus](https://github.com/tkrajina/git-plus] multi: run commands in multiple git repos
+* [mu-repo](https://fabioz.github.io/mu-repo/): help working with multiple git repos
+* [uncommitted](https://github.com/brandon-rhodes/uncommitted): find uncommitted changes in VCS directories
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [VCS](http://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
 * [vcstool](https://github.com/dirk-thomas/vcstool): work with multiple repositories
 * [vcstools](https://github.com/vcstools/vcstools): Python API wrapping version control systems
 * [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool
+* [wstool](https://github.com/vcstools/wstool): maintain workspace of projects from multiple VCSes
 * [vcs-repo-mgr](https://github.com/xolox/python-vcs-repo-mgr): version control repository manager
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
 * [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper

Add link to gita for managing multiple git repositories
Discussion: https://news.ycombinator.com/item?id=19074170
diff --git a/doc/index.mdwn b/doc/index.mdwn
index a54ae73..285d20e 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -84,6 +84,7 @@ Some more examples of things it can do include:
 ## related software
 
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
+* [gita](https://github.com/nosarthur/gita): manage multiple git repos
 * [kas](https://github.com/siemens/kas): bitbake repository management tool
 * [VCS](http://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
 * [vcstool](https://github.com/dirk-thomas/vcstool): work with multiple repositories

Added a comment: process a repository before anything else
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_4_b37c8216ed51d9b64f78b7a7d629efa6._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_4_b37c8216ed51d9b64f78b7a7d629efa6._comment
new file mode 100644
index 0000000..e3fa8a4
--- /dev/null
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_4_b37c8216ed51d9b64f78b7a7d629efa6._comment
@@ -0,0 +1,25 @@
+[[!comment format=mdwn
+ username="https://ao2.it/"
+ nickname="ao2"
+ avatar="http://cdn.libravatar.org/avatar/fe977073a31737b41b0ad0df63c0fba3972c817fdda57399e6d1880eb7194beb"
+ subject="process a repository before anything else"
+ date="2019-01-24T22:06:37Z"
+ content="""
+Hi,
+
+I too experienced this issue with `order` an `jobs`, but in my case I wanted
+to process one specific repository (the vcsh one with `order=1`) **before**
+all the others.
+
+The specific case I wanted to cover is when the main vcsh repository has some
+updated hooks, so I want it to be updated before updating or cloning all the
+other repositories managed by vcsh.
+
+The idea of having some value of `order` mean \"*first*\" or \"*last*\", and
+serialize the repositories which use them outside of the multi-processing
+dispatch is tempting.
+
+Ciao,
+   Antonio
+
+"""]]

Mention Myon's v script
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 22a6f7c..a54ae73 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -91,6 +91,7 @@ Some more examples of things it can do include:
 * [rosinstall](https://github.com/vcstools/rosinstall): source code workspace management tool
 * [vcs-repo-mgr](https://github.com/xolox/python-vcs-repo-mgr): version control repository manager
 * [go-vcs](https://github.com/Masterminds/vcs): version control repository management for Golang
+* [v](https://github.com/ChristophBerg/dotfiles/blob/master/bin/v): version control subcommand wrapper
 
 ## news
 

fix formatting
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1.mdwn b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1.mdwn
index 8ecdea1..3a3a64a 100644
--- a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1.mdwn
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1.mdwn
@@ -1,14 +1,12 @@
 I'm attempting to implement a *dummy* target as illustrated in [mrconfig.complex](https://github.com/joeyh/myrepos/blob/master/mrconfig.complex) to run fixups after all updates have been completed:
 
-```
-[tmp]
-# This is a dummy target, all it does is run fixups at the end of
-# an update.
-fixups = $HOME/bin/fixups
-checkout = mkdir -p $HOME/tmp
-status = :
-order = 25
-```
+    [tmp]
+    # This is a dummy target, all it does is run fixups at the end of
+    # an update.
+    fixups = $HOME/bin/fixups
+    checkout = mkdir -p $HOME/tmp
+    status = :
+    order = 25
 
 1. After adding the above section to my .mrconfig, I received the following error message when executing `mr up`:
 > **mr update: unknown repository type and no defined update command for /Users/tom/tmp**

Added a comment: not possible yet
diff --git a/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig/comment_1_f312541b567210f46f6ee109002d9135._comment b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig/comment_1_f312541b567210f46f6ee109002d9135._comment
new file mode 100644
index 0000000..a1578e0
--- /dev/null
+++ b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig/comment_1_f312541b567210f46f6ee109002d9135._comment
@@ -0,0 +1,20 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="not possible yet"
+ date="2018-11-12T01:37:47Z"
+ content="""
+This isn't possible at this time, the mr command-line options are only able to be set on the command-line.
+
+The minimal option is implemented in mr, not in the *_status values that specify commands. It works by supervising the output of the commands and only printing the mr parts of the output when there is command output or errors.
+
+I can see that this idea would definitely be useful to some folks.
+
+I think any implementation of this idea probably should have these features:
+
+* allow replacing, prepending, appending and setting the default options like the other value setting mechanisms do, for maximum flexibility in setting up the options
+* allow setting the options in the DEFAULT section or in any of the repository sections, to allow setting them on a per-repository basis
+* allow setting the options differently for each command type and each repository type, for maximum flexibility
+* add options for turning off options (like --no-minimal), so that there is more flexibility about when to turn them on/off
+* *only* allow setting a whitelisted set of *safe* options, so that this doesn't cause any security issues
+"""]]

close due to user error
diff --git a/doc/todo/mr_will_not_clone_to___47__opt.mdwn b/doc/todo/mr_will_not_clone_to___47__opt.mdwn
index 5a0caf6..5bf9b93 100644
--- a/doc/todo/mr_will_not_clone_to___47__opt.mdwn
+++ b/doc/todo/mr_will_not_clone_to___47__opt.mdwn
@@ -23,3 +23,4 @@ From my reading of the **mrconfig.complex** example configuration file, there sh
 
 *I'm certain I've overlooked something rather simple--please help. Thanks!*
 
+[[done]] --pabs: user error

Added a comment: cd / && mr up
diff --git a/doc/todo/mr_will_not_clone_to___47__opt/comment_3_86879f5d33417fc0edacff4cca0dfe68._comment b/doc/todo/mr_will_not_clone_to___47__opt/comment_3_86879f5d33417fc0edacff4cca0dfe68._comment
new file mode 100644
index 0000000..1dc41cc
--- /dev/null
+++ b/doc/todo/mr_will_not_clone_to___47__opt/comment_3_86879f5d33417fc0edacff4cca0dfe68._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="Tom"
+ avatar="http://cdn.libravatar.org/avatar/a39876f3fdeb0295ec9258bbb1b37f88"
+ subject="cd / && mr up"
+ date="2018-11-11T23:38:03Z"
+ content="""
+--->  In order to operate on /opt, you would first need to cd /  <---
+
+Thanks! I knew it had to be something simple. I was under the faulty assumption the absolute path in `[/opt]` would cause it to work when executing from my home directory.
+"""]]

Added a comment: works for me
diff --git a/doc/todo/mr_will_not_clone_to___47__opt/comment_2_96e6d884b69df6a55a549ce6a1a97b9b._comment b/doc/todo/mr_will_not_clone_to___47__opt/comment_2_96e6d884b69df6a55a549ce6a1a97b9b._comment
new file mode 100644
index 0000000..102c2fa
--- /dev/null
+++ b/doc/todo/mr_will_not_clone_to___47__opt/comment_2_96e6d884b69df6a55a549ce6a1a97b9b._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="works for me"
+ date="2018-11-11T07:51:39Z"
+ content="""
+I tried this in a chroot and it works for me.
+
+Which directory are you running `mr up` etc from?
+"""]]

Added a comment
diff --git a/doc/todo/mr_will_not_clone_to___47__opt/comment_1_6eac2a8a4470ec8794282cc8777f7537._comment b/doc/todo/mr_will_not_clone_to___47__opt/comment_1_6eac2a8a4470ec8794282cc8777f7537._comment
new file mode 100644
index 0000000..6734ebb
--- /dev/null
+++ b/doc/todo/mr_will_not_clone_to___47__opt/comment_1_6eac2a8a4470ec8794282cc8777f7537._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="spwhitton"
+ avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
+ subject="comment 1"
+ date="2018-11-08T20:55:36Z"
+ content="""
+In order to operate on `/opt`, you would first need to `cd /`.
+"""]]

diff --git a/doc/todo/mr_will_not_clone_to___47__opt.mdwn b/doc/todo/mr_will_not_clone_to___47__opt.mdwn
new file mode 100644
index 0000000..5a0caf6
--- /dev/null
+++ b/doc/todo/mr_will_not_clone_to___47__opt.mdwn
@@ -0,0 +1,25 @@
+##Possible Bug
+
+I've been using mr to manage dozens of git repos for many years (most live in my home directory). Today, I ran into something that didn't work. I had decided to manage `/opt` in a git repo, and I added the following configuration lines:
+
+    [/opt]
+    checkout = git clone 'https://github.com/tomhoover/docker-compose.git' 'opt'
+    skip = ! test "$(whoami)" = root
+    fixups = chmod 755 /opt
+
+Running `mr up` didn't do anything (nor even list the `/opt` repo within its output--it acted as if it had been skipped), so I deleted the `skip` line above and tried again--still a no-go.
+
+ All of the above was attempted while logged in as **root**, and I verified the **/opt** directory did not already exist.
+
+##Additional info
+To verify git was working properly, I executed `git clone 'https://github.com/tomhoover/docker-compose.git' 'opt' && chmod 755 /opt` from **/**, as **root**, and it worked as expected. After manually cloning the repo into **/opt**, I attemped `mr up`, `mr push`, etc; however, mr continues to ignore the **/opt** git repo.
+
+From my reading of the **mrconfig.complex** example configuration file, there should be nothing preventing a repo from living at **/**, as the following example is included:
+
+    [/etc]
+    # I use etckeeper to keep /etc in git. But it only works if I'm root, 
+    # and if it's not already in etc, skip it.
+    skip = ! test -d /etc/.git || ! test "$(whoami)" = root
+
+*I'm certain I've overlooked something rather simple--please help. Thanks!*
+

paths stored are relative to HOME but printed as absolute
diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
index 1b8a34d..2b8ba2f 100644
--- a/doc/todo/Unregister_and_Delete_command.mdwn
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -5,9 +5,10 @@ I found this script pretty useful but lacking some basic commands for cleanup li
 I've added the following definitions in my ~/.mrconfig file:
 
     [DEFAULT]
+    # Teach mr how to `mr gc` in git repos.
     git_gc = git gc "$@"
-    unregister = sed -i "\|${PWD}|,+2 d" ${MR_CONFIG}
-    delete = rm -rI "$@" "$PWD" && sed -i "\|${PWD}|,+2 d" ${MR_CONFIG}
+    unregister = sed -i "\|${PWD//${HOME}\//}|,+2 d" ${MR_CONFIG}
+    delete = rm -rI "$@" "$PWD" && sed -i "\|${PWD//${HOME}\//}|,+2 d" ${MR_CONFIG}
 
 While the first command is an example in the documentation the other two basically iterate over available repos in "mr ls" to either just remove the entry lines from mrconfig file (mr unregister) or delete existing directory with confirmations (mr delete) and then unregister, you can force using (mr delete -f)
 

paths stored are relative to HOME but printed as absolute
diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
index 7f5d6cb..1b8a34d 100644
--- a/doc/todo/Unregister_and_Delete_command.mdwn
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -16,7 +16,7 @@ I also had the situation that some repositories were already deleted and so "mr
 I've applied the following workaround:
 
     repo_list=$(mr ls 2>&1 | grep "failed to chdir to" | egrep -o "/.*:" | sed "s|/:||" | sed "s|${HOME}/||")
-    for repo in ${repo_list}; do
+    for repo in ${repo_list//${HOME}\//}; do
         sed -i "\|${repo}|,+2 d" ~/.mrconfig
     done
 

Added a comment: Alternative Sorting Method with GAWK
diff --git a/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment b/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment
new file mode 100644
index 0000000..700a40e
--- /dev/null
+++ b/doc/todo/sorted_.mrconfig/comment_1_fe128f2a8f16438b9e5b48fcfaf0c47b._comment
@@ -0,0 +1,27 @@
+[[!comment format=mdwn
+ username="hello@ba09c8bb59ae91163b65dfbd0b66e3f1cc450ffe"
+ nickname="hello"
+ avatar="http://cdn.libravatar.org/avatar/0846020203474ffe096f5cbd58cc98d5"
+ subject="Alternative Sorting Method with GAWK"
+ date="2018-10-01T23:51:42Z"
+ content="""
+I am by no way a command line expert, but I was unable to get the sort-ini method to work for me so I looked into generalized sorting by pattern and came across a site that had an example that was pretty close to what I needed.
+
+A couple of paragraphs down the original example is labeled \"Robbins' awk based shell pipeline\"
+ 
+http://homepage.smc.edu/morgan_david/linadmin/labs/sort-multiline-blocks.htm
+
+From there I came to this
+
+```
+gawk -v RS=\"\" '{ gsub(\"\n\", \"###\"); print }' .mrconfig | sort -f | gawk -v ORS=\"\n\n\" '{ gsub(\"###\", \"\n\"); print }' > .mrconfig.tmp && mv .mrconfig.tmp .mrconfig
+```
+
+The `###` is my temp replacement for the newline so that sort can be used, at which point it is returned to a newline. I had trouble with the `^Z` characters in the example. 
+
+Which I then set up as an alias
+
+```
+alias mrsort=\"gawk -v RS=\\"\\" '{ gsub(\\"\n\\", \\"###\\"); print }' .mrconfig | sort -f | gawk -v ORS=\\"\n\n\\" '{ gsub(\\"###\\", \\"\n\\"); print }' > .mrconfig.tmp && mv .mrconfig.tmp .mrconfig\"
+```
+"""]]

diff --git a/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn
index b9f6692..4b83542 100644
--- a/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn
+++ b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn
@@ -1 +1,2 @@
 as the title states, I would like mr status to be --minimal by default, is there a way to change it in .mrconfig?
+for now I made a bash alias but thats not very satisfying.

diff --git a/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn
new file mode 100644
index 0000000..b9f6692
--- /dev/null
+++ b/doc/todo/Make_mr_status_or_git__95__status_for_that_matter_have_minimal_set_by_default_through_.mrconfig.mdwn
@@ -0,0 +1 @@
+as the title states, I would like mr status to be --minimal by default, is there a way to change it in .mrconfig?

Added a comment: Encountering the same error on WSL
diff --git a/doc/todo/Issues_with_Bash_on_Windows/comment_3_bc3997375a543f4c6126ec1c93efc762._comment b/doc/todo/Issues_with_Bash_on_Windows/comment_3_bc3997375a543f4c6126ec1c93efc762._comment
new file mode 100644
index 0000000..efb6df1
--- /dev/null
+++ b/doc/todo/Issues_with_Bash_on_Windows/comment_3_bc3997375a543f4c6126ec1c93efc762._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="tobias.brandt@7743a4214ef91db7c3e3a7e80d8553e8725dc92c"
+ nickname="tobias.brandt"
+ avatar="http://cdn.libravatar.org/avatar/d8aec090bed3518ebcb66c2063dbdf0b"
+ subject="Encountering the same error on WSL"
+ date="2018-08-19T16:25:34Z"
+ content="""
+I hit the same error just now on WSL. Still getting the 127 error as I'm using Ubuntu 16.04 package version of mr.
+"""]]

removed
diff --git a/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment b/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment
deleted file mode 100644
index b473db0..0000000
--- a/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="tobias.brandt@7743a4214ef91db7c3e3a7e80d8553e8725dc92c"
- nickname="tobias.brandt"
- avatar="http://cdn.libravatar.org/avatar/d8aec090bed3518ebcb66c2063dbdf0b"
- subject="Encountering the same error"
- date="2018-08-19T16:23:50Z"
- content="""
-I hit the same error just now. Still getting the 127 error as I'm using Ubuntu 16.04 package version of `mr`.
-
-"""]]

Added a comment: Encountering the same error
diff --git a/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment b/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment
new file mode 100644
index 0000000..b473db0
--- /dev/null
+++ b/doc/todo/Issues_with_Bash_on_Windows/comment_3_a129e65e7b3b9512a173d6550a64cad4._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="tobias.brandt@7743a4214ef91db7c3e3a7e80d8553e8725dc92c"
+ nickname="tobias.brandt"
+ avatar="http://cdn.libravatar.org/avatar/d8aec090bed3518ebcb66c2063dbdf0b"
+ subject="Encountering the same error"
+ date="2018-08-19T16:23:50Z"
+ content="""
+I hit the same error just now. Still getting the 127 error as I'm using Ubuntu 16.04 package version of `mr`.
+
+"""]]

Removed quotes
diff --git a/doc/todo/Issues_with_Bash_on_Windows.mdwn b/doc/todo/Issues_with_Bash_on_Windows.mdwn
index 614c862..7580bdc 100644
--- a/doc/todo/Issues_with_Bash_on_Windows.mdwn
+++ b/doc/todo/Issues_with_Bash_on_Windows.mdwn
@@ -12,5 +12,3 @@ mr s: received signal 127
 The status action does not cover a number of my repos, it just stops at the first repo.
 
 I have installed `mr` via `sudo apt-get install mr`.
-```
-

Removed my comment which I had put in the wrong place.
diff --git a/doc/todo/Issues_with_Bash_on_Windows.mdwn b/doc/todo/Issues_with_Bash_on_Windows.mdwn
index d3b96c8..614c862 100644
--- a/doc/todo/Issues_with_Bash_on_Windows.mdwn
+++ b/doc/todo/Issues_with_Bash_on_Windows.mdwn
@@ -13,4 +13,4 @@ The status action does not cover a number of my repos, it just stops at the firs
 
 I have installed `mr` via `sudo apt-get install mr`.
 ```
-I hit the same error just now. Still getting the 127 error as I'm using Ubuntu 16.04 package version of `mr`.
+

diff --git a/doc/todo/Issues_with_Bash_on_Windows.mdwn b/doc/todo/Issues_with_Bash_on_Windows.mdwn
index 7580bdc..d3b96c8 100644
--- a/doc/todo/Issues_with_Bash_on_Windows.mdwn
+++ b/doc/todo/Issues_with_Bash_on_Windows.mdwn
@@ -12,3 +12,5 @@ mr s: received signal 127
 The status action does not cover a number of my repos, it just stops at the first repo.
 
 I have installed `mr` via `sudo apt-get install mr`.
+```
+I hit the same error just now. Still getting the 127 error as I'm using Ubuntu 16.04 package version of `mr`.

Added a comment
diff --git a/doc/todo/Add_gbp_support/comment_4_d019df93d0e6d1582ddb79e2369c8dbf._comment b/doc/todo/Add_gbp_support/comment_4_d019df93d0e6d1582ddb79e2369c8dbf._comment
new file mode 100644
index 0000000..2c1c307
--- /dev/null
+++ b/doc/todo/Add_gbp_support/comment_4_d019df93d0e6d1582ddb79e2369c8dbf._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="spwhitton"
+ avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
+ subject="comment 4"
+ date="2018-08-10T11:31:13Z"
+ content="""
+Since this would likely be a one-off, you could just use `mr run`.
+"""]]

removed
diff --git a/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment b/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment
deleted file mode 100644
index 0b8e272..0000000
--- a/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="spwhitton"
- avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
- subject="comment 4"
- date="2018-08-10T11:30:40Z"
- content="""
-You can just use `mr run` in such a case.
-"""]]

Added a comment
diff --git a/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment b/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment
new file mode 100644
index 0000000..0b8e272
--- /dev/null
+++ b/doc/todo/Add_gbp_support/comment_4_a8f3e9ec8ff05b186838342af2b528b9._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="spwhitton"
+ avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
+ subject="comment 4"
+ date="2018-08-10T11:30:40Z"
+ content="""
+You can just use `mr run` in such a case.
+"""]]

releasing package myrepos version 1.20180726
diff --git a/debian/changelog b/debian/changelog
index 24f767d..2d2744c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,35 @@
+myrepos (1.20180726) unstable; urgency=medium
+
+  [ Andrew Bradford ]
+  * Suggest perl-doc (Closes: #813738)
+
+  [ Mark Haber ]
+  * Fix hours_since for git fake bare repos (Closes: #828827)
+
+  [ Tom Hoover ]
+  * Fix 'no defined update command error' in example config
+
+  [ Pavel Nakonechnyi ]
+  * More meaningful names for temporary files
+
+  [ Paul Wise ]
+  * Mitigate vulns caused by git code execution (Closes: #840014, CVE-2018-7032)
+  * Migrate from ack-grep to ack (Closes: #849600)
+  * More reliable output supervision
+  * Allow prepending commands to existing commands
+  * Allow for fallback to default commands
+  * Add support for caching command output
+  * Add graph, remote, upgrade extensions
+  * Improve the status output for CVS
+  * Improve the git-cvs extension
+  * Add shell extension to maintain a repo status cache
+  * git registration improvements
+  * webcheckout: prefer https transport
+  * Suggest more tools that are used
+  * Various packaging cleanups
+
+ -- Paul Wise <pabs@debian.org>  Thu, 26 Jul 2018 14:14:21 +0800
+
 myrepos (1.20171231) unstable; urgency=medium
 
   [ Joey Hess ]
diff --git a/doc/news/version_1.20180726.mdwn b/doc/news/version_1.20180726.mdwn
new file mode 100644
index 0000000..734c6dc
--- /dev/null
+++ b/doc/news/version_1.20180726.mdwn
@@ -0,0 +1,24 @@
+myrepos 1.20180726 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * [ Mark Haber ]
+   * Fix hours_since for git fake bare repos
+
+ * [ Tom Hoover ]
+   * Fix 'no defined update command error' in example config
+
+ * [ Pavel Nakonechnyi ]
+   * More meaningful names for temporary files
+
+ * [ Paul Wise ]
+   * Mitigate vulns caused by git code execution (CVE-2018-7032)
+   * Migrate from ack-grep to ack
+   * More reliable output supervision
+   * Improve the status output for CVS
+   * Improve the git-cvs extension
+   * Allow prepending commands to existing commands
+   * Allow for fallback to default commands
+   * Add support for caching command output
+   * Add shell extension to maintain a repo status cache
+   * Add graph, remote, upgrade extensions
+   * git registration improvements
+   * webcheckout: prefer https transport"""]]

Added a comment: similar changes across multiple repos?
diff --git a/doc/todo/Add_gbp_support/comment_3_a9bb97e5bbdff3771edcdf51f2eb1dfb._comment b/doc/todo/Add_gbp_support/comment_3_a9bb97e5bbdff3771edcdf51f2eb1dfb._comment
new file mode 100644
index 0000000..dfacc99
--- /dev/null
+++ b/doc/todo/Add_gbp_support/comment_3_a9bb97e5bbdff3771edcdf51f2eb1dfb._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="PaulWise"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="similar changes across multiple repos?"
+ date="2018-07-24T09:45:56Z"
+ content="""
+Would it make sense to run `gbp dch` on multiple repos after making a change using sed or another automated mechanism?
+"""]]

Switch to the Repology packages page instead of the versions page
The packages page includes more links than just the main page.
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 43f73be..7f3b380 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -19,7 +19,7 @@ See also:
 [MacPorts](https://github.com/macports/macports-ports/tree/master/devel/myrepos),
 [Homebrew](https://github.com/Homebrew/homebrew-core/blob/master/Formula/mr.rb),
 [Linuxbrew](https://github.com/Linuxbrew/homebrew-core/blob/master/Formula/mr.rb),
-[Repology](https://repology.org/metapackage/myrepos/versions).
+[Repology](https://repology.org/metapackage/myrepos/packages).
 
 [[!inline pages="./todo/* and !./todo/done and !link(done)
 and !*/Discussion" actions=yes postform=yes show=0 archive=yes]]

Remove Repology mr link
Repology has removed the mr metapackage and
added all the mr packages to the myrepos metapackage.
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 5d6970f..43f73be 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -19,9 +19,7 @@ See also:
 [MacPorts](https://github.com/macports/macports-ports/tree/master/devel/myrepos),
 [Homebrew](https://github.com/Homebrew/homebrew-core/blob/master/Formula/mr.rb),
 [Linuxbrew](https://github.com/Linuxbrew/homebrew-core/blob/master/Formula/mr.rb),
-Repology
-([myrepos](https://repology.org/metapackage/myrepos/versions),
-[mr](https://repology.org/metapackage/mr/versions])).
+[Repology](https://repology.org/metapackage/myrepos/versions).
 
 [[!inline pages="./todo/* and !./todo/done and !link(done)
 and !*/Discussion" actions=yes postform=yes show=0 archive=yes]]

diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
index 472e3e1..7f5d6cb 100644
--- a/doc/todo/Unregister_and_Delete_command.mdwn
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -15,7 +15,7 @@ While the first command is an example in the documentation the other two basical
 I also had the situation that some repositories were already deleted and so "mr unregister" would fail because it could not "change to directory".
 I've applied the following workaround:
 
-    repo_list=$(mr ls 2>&1 | grep "failed to chdir to" | egrep -o '/.*:' | sed s'|/:||')
+    repo_list=$(mr ls 2>&1 | grep "failed to chdir to" | egrep -o "/.*:" | sed "s|/:||" | sed "s|${HOME}/||")
     for repo in ${repo_list}; do
         sed -i "\|${repo}|,+2 d" ~/.mrconfig
     done

diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
index af2a664..472e3e1 100644
--- a/doc/todo/Unregister_and_Delete_command.mdwn
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -15,7 +15,7 @@ While the first command is an example in the documentation the other two basical
 I also had the situation that some repositories were already deleted and so "mr unregister" would fail because it could not "change to directory".
 I've applied the following workaround:
 
-    repo_list=$(mr ls 2>&1 | egrep -o '/.*:' | sed s'|/:||')
+    repo_list=$(mr ls 2>&1 | grep "failed to chdir to" | egrep -o '/.*:' | sed s'|/:||')
     for repo in ${repo_list}; do
         sed -i "\|${repo}|,+2 d" ~/.mrconfig
     done

diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
index 009e36a..af2a664 100644
--- a/doc/todo/Unregister_and_Delete_command.mdwn
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -3,6 +3,7 @@ I found this script pretty useful but lacking some basic commands for cleanup li
 
 ## Settings in ~/.mrconfig
 I've added the following definitions in my ~/.mrconfig file:
+
     [DEFAULT]
     git_gc = git gc "$@"
     unregister = sed -i "\|${PWD}|,+2 d" ${MR_CONFIG}
@@ -13,6 +14,7 @@ While the first command is an example in the documentation the other two basical
 ## Unregister repos already deleted
 I also had the situation that some repositories were already deleted and so "mr unregister" would fail because it could not "change to directory".
 I've applied the following workaround:
+
     repo_list=$(mr ls 2>&1 | egrep -o '/.*:' | sed s'|/:||')
     for repo in ${repo_list}; do
         sed -i "\|${repo}|,+2 d" ~/.mrconfig

diff --git a/doc/todo/Unregister_and_Delete_command.mdwn b/doc/todo/Unregister_and_Delete_command.mdwn
new file mode 100644
index 0000000..009e36a
--- /dev/null
+++ b/doc/todo/Unregister_and_Delete_command.mdwn
@@ -0,0 +1,21 @@
+# Overview
+I found this script pretty useful but lacking some basic commands for cleanup like "unregister" or "delete" existing repos, so I decided to try to make my own using the DEFAULT aliases in config file.
+
+## Settings in ~/.mrconfig
+I've added the following definitions in my ~/.mrconfig file:
+    [DEFAULT]
+    git_gc = git gc "$@"
+    unregister = sed -i "\|${PWD}|,+2 d" ${MR_CONFIG}
+    delete = rm -rI "$@" "$PWD" && sed -i "\|${PWD}|,+2 d" ${MR_CONFIG}
+
+While the first command is an example in the documentation the other two basically iterate over available repos in "mr ls" to either just remove the entry lines from mrconfig file (mr unregister) or delete existing directory with confirmations (mr delete) and then unregister, you can force using (mr delete -f)
+
+## Unregister repos already deleted
+I also had the situation that some repositories were already deleted and so "mr unregister" would fail because it could not "change to directory".
+I've applied the following workaround:
+    repo_list=$(mr ls 2>&1 | egrep -o '/.*:' | sed s'|/:||')
+    for repo in ${repo_list}; do
+        sed -i "\|${repo}|,+2 d" ~/.mrconfig
+    done
+
+I hope this helps other users and hopefully, the new commands will get into the default release eventually.

Added a comment
diff --git a/doc/todo/Add_gbp_support/comment_2_bbe3beff9631f4862b889c7f7f665e4b._comment b/doc/todo/Add_gbp_support/comment_2_bbe3beff9631f4862b889c7f7f665e4b._comment
new file mode 100644
index 0000000..900b3bb
--- /dev/null
+++ b/doc/todo/Add_gbp_support/comment_2_bbe3beff9631f4862b889c7f7f665e4b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="spwhitton"
+ avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
+ subject="comment 2"
+ date="2018-05-25T09:36:09Z"
+ content="""
+I don't think I understand the value of this plugin.  The only gbp command that I can imagine wanting to run in batch across all my repos is `gbp clone`, so I could see the value of a short plugin that handles cloning and registering gbp repos.  But I don't see why you would ever want to run `gbp dch` across more than one repo at once.
+"""]]

Added a comment: please link to a git repository
diff --git a/doc/todo/Add_gbp_support/comment_1_837dd63cc0d05585dcc99b57410a043c._comment b/doc/todo/Add_gbp_support/comment_1_837dd63cc0d05585dcc99b57410a043c._comment
new file mode 100644
index 0000000..1abceaf
--- /dev/null
+++ b/doc/todo/Add_gbp_support/comment_1_837dd63cc0d05585dcc99b57410a043c._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="pabs3@49c776417680694a0f3295ee80df4edfca300096"
+ nickname="pabs3"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="please link to a git repository"
+ date="2018-05-24T01:03:48Z"
+ content="""
+Please add a link to a git repository containing the commit you want to add.
+
+Some suggestions for that:
+
+Please include the gbp support as a plugin rather than in mr itself.
+
+Please add a copyright and license notice in comments at the start of the plugin.
+
+Please add some documentation in comments at the start of the plugin.
+
+Please use perl: for the gbp_test/git_test code, it is faster and most of the other *_test code uses it.
+
+Please sync gbp_grep with git_grep, the latter always returns true.
+"""]]

diff --git a/doc/todo/Add_gbp_support.mdwn b/doc/todo/Add_gbp_support.mdwn
new file mode 100644
index 0000000..058a838
--- /dev/null
+++ b/doc/todo/Add_gbp_support.mdwn
@@ -0,0 +1,39 @@
+It would be use to add gbp (git buildpackage) support to myrepos.
+
+Here's the config I have created (I'm not sure where's best to post patches/PRs, so if someone can point me in the right direction I'll create one):
+
+    git_test = test -e "$MR_REPO/.git" && ! test -e "$MR_REPO/debian/gbp.conf"
+    gbp_test = test -e "$MR_REPO/.git" && test -e "$MR_REPO/debian/gbp.conf"
+    gbp_trusted_checkout = gbp clone $url
+    gbp_register = 
+    	   url="`LC_ALL=C git config --get remote.origin.url`" || true
+    	   if [ -z "$url" ]; then
+    	       error "cannot determine gbp url"
+    	   fi
+    	   echo "Registering gbp url: $url in $MR_CONFIG"
+    	   mr -c "$MR_CONFIG" config "`pwd`" checkout="gbp clone '$url'"
+    gbp_update = gbp pull
+    # additional
+    gbp_buildpackage = gbp buildpackage "$@"
+    gbp_importorig = gbp import-orig "$@"
+    gbp_importdsc = gbp import-dsc "$@"
+    gbp_importdscs = gbp import-dscs "$@"
+    gbp_dch = gbp dch "$@"
+    gbp_pq = gbp pq "$@"
+    gbp_createremoterepo = gbp create-remote-repo "$@"
+    # same as git
+    gbp_fetch = git fetch --all --prune --tags "$@"
+    gbp_status = git status -s "$@" || true; git --no-pager log --branches --not --remotes --simplify-by-decoration --decorate --oneline || true; git --no-pager stash list
+    gbp_commit = git commit -a "$@" && git push --all
+    gbp_record = git commit -a "$@"
+    gbp_push = git push "$@"
+    gbp_diff = git diff "$@"
+    gbp_log = git log "$@"
+    gbp_grep = git grep "$@"
+    gbp_clean = 
+    	   if [ "x$1" = x-f ] ; then
+    	       shift
+    	       git clean -dx --force "$@"
+    	   else
+    	       git clean -dx --dry-run "$@"
+    	   fi

Added a comment: Symlinked Repos
diff --git a/doc/todo/Allow_symlinked_directories/comment_2_c55e82567c7784b89ff729008846789b._comment b/doc/todo/Allow_symlinked_directories/comment_2_c55e82567c7784b89ff729008846789b._comment
new file mode 100644
index 0000000..735db27
--- /dev/null
+++ b/doc/todo/Allow_symlinked_directories/comment_2_c55e82567c7784b89ff729008846789b._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="mforbes"
+ avatar="http://cdn.libravatar.org/avatar/e497ff9efad76394e98daa506ebc8fef"
+ subject="Symlinked Repos"
+ date="2018-05-22T08:10:53Z"
+ content="""
+I too would greatly appreciate being able to track symlinks with myrepos.  (Quite often I will store the repo in a common location, but use it in several other projects via a symlinks).
+
+This used to work, but was broken in revision 52e2de0bdeb8b892c8b83fcad54543f874d4e5b8
+"""]]

some way to sort .mrconfig files
diff --git a/doc/todo/sorted_.mrconfig.mdwn b/doc/todo/sorted_.mrconfig.mdwn
new file mode 100644
index 0000000..783983a
--- /dev/null
+++ b/doc/todo/sorted_.mrconfig.mdwn
@@ -0,0 +1,7 @@
+it would be nice if mr would keep things in order while adding stuff to our every-growing `.mrconfig` files. I try to keep mine sorted, and did that by hand until I had to add a bunch of entries at once (because i managed to [[detect_unregistered_repos_in_tree]]), and it was then really impractical.
+
+I hacked together this ridiculous Python script which reads a .INI file from stdin (or commandline arguments) and spews out a sorted version on stdout. A simple way to use this is:
+
+    sort-ini ~/.mrconfig | sponge ~/.mrconfig
+
+The script is [sort-ini](https://gitlab.com/anarcat/scripts/raw/2dc32c23496b5c3c33d09ed78e7b3acbdc7fe5eb/sort-ini) and is available in my [scripts repo](https://gitlab.com/anarcat/scripts/). --[[anarcat]]

Added a comment: find hack
diff --git a/doc/todo/detect_unregistered_repos_in_tree/comment_1_5ff421bafac1683b7e305b0b225786f6._comment b/doc/todo/detect_unregistered_repos_in_tree/comment_1_5ff421bafac1683b7e305b0b225786f6._comment
new file mode 100644
index 0000000..88bb213
--- /dev/null
+++ b/doc/todo/detect_unregistered_repos_in_tree/comment_1_5ff421bafac1683b7e305b0b225786f6._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="anarcat"
+ avatar="http://cdn.libravatar.org/avatar/b486931ea9d27c0cc41a4e9e4daccb7c"
+ subject="find hack"
+ date="2018-04-29T17:39:42Z"
+ content="""
+I have just used this hack to workaround this issue:
+
+    find -maxdepth 1 -type d -a -\( -execdir grep -q {} ~/.mrconfig \; -o -okdir mr register '{}' \; -\)
+
+What it does is look in the current directory, one level deep, for directories and check if they are in `~/.mrconfig`. If they aren't, ask if they should be registered. Obviously, this should check for stuff like if `.git` exists and so on, but considering the variety of repos supported by mr, i figured I would keep this simple. --[[anarcat]]
+"""]]

Added a comment: State of affairs with symlinks
diff --git a/doc/todo/Allow_symlinked_directories/comment_1_8f808f36de1eacb0c56621b1fc6356c3._comment b/doc/todo/Allow_symlinked_directories/comment_1_8f808f36de1eacb0c56621b1fc6356c3._comment
new file mode 100644
index 0000000..dde50b6
--- /dev/null
+++ b/doc/todo/Allow_symlinked_directories/comment_1_8f808f36de1eacb0c56621b1fc6356c3._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="simonjena@4ef913dc612cd8f4bd72ef70ef1d534ed8bdd69b"
+ nickname="simonjena"
+ avatar="http://cdn.libravatar.org/avatar/1b3e001e798156fb7d97fd064b63c3e2"
+ subject="State of affairs with symlinks"
+ date="2018-04-05T19:35:58Z"
+ content="""
+Hi; 
+I think that project is absolutely great. However, I was disappointed that symlinks are not supported. I, too, have fallen victim to a $HOME symlink situation, but additionally, my idea of creating a generic symlink-based \"views on my repositories\"-kind of structure vanished before my eyes. I really think this project could need a propper refactoring with respect to resolving symlinks with respect to BOTH path-to-configuration-file and path-to-repository. I am absolutely no good with perl, however, as I learned when trying to fix it myself the last few hours :/
+
+Thank you in any case for the project, because it is a nice help already! however, proper symlink support seems a must-have to me at least for real adaption into my core setup and developing stuff around it.
+
+Cheers!
+S.
+"""]]

caps
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 8b550bd..22a6f7c 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -97,7 +97,7 @@ Some more examples of things it can do include:
 [[!inline pages="news/* and !*/Discussion" show="4" archive=yes]]
 
 [[!sidebar content="""
-[[install]]  
-[[todo]]  
-[[forum]]  
+[[Install]]  
+[[Todo]]  
+[[Forum]]  
 """]]