Recent changes to this wiki:

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]]  
 """]]

add a forum
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
new file mode 100644
index 0000000..931900e
--- /dev/null
+++ b/doc/forum.mdwn
@@ -0,0 +1,4 @@
+This is a place to discuss using myrepos, share tips and tricks, etc.
+If you need help, advice, or anything, post about it here.
+
+[[!inline pages="forum/* and !*/Discussion" archive=yes rootpage=forum postformtext="Add a new thread titled:"]]
diff --git a/doc/index.mdwn b/doc/index.mdwn
index e2c6c3e..8b550bd 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -97,6 +97,7 @@ Some more examples of things it can do include:
 [[!inline pages="news/* and !*/Discussion" show="4" archive=yes]]
 
 [[!sidebar content="""
-[[install]]
-[[todo]]
+[[install]]  
+[[todo]]  
+[[forum]]  
 """]]

Added a comment
diff --git a/doc/todo/scheme_for_managing_Forks/comment_1_37c1845bd19b95a25c2c4e429a228545._comment b/doc/todo/scheme_for_managing_Forks/comment_1_37c1845bd19b95a25c2c4e429a228545._comment
new file mode 100644
index 0000000..d6247c9
--- /dev/null
+++ b/doc/todo/scheme_for_managing_Forks/comment_1_37c1845bd19b95a25c2c4e429a228545._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="duncan@f5130b2b0a997a1072abb7c83c68f15497146966"
+ nickname="duncan"
+ avatar="http://cdn.libravatar.org/avatar/275e9d19ecd061c064e33814b52eeb1c"
+ subject="comment 1"
+ date="2018-03-09T10:35:53Z"
+ content="""
+Checkout and set up your additional remote manually for 1 repo, then you can transcribe that into a reusable shell function that uses the MR_REPO envinoment variable (probably `basename`ing it) and a supplied GitHub username. 
+
+Then paste that function into  \"lib =\"  in the [DEFAULT] section of your mrconfig file. Your 27 \"checkout =\" commands can now just call that function rather than doing git commands themselves. 
+
+I do this and so have lots of lines in my mrconfig like:
+
+    [workspace/programming/someproj]
+    checkout = cloneGithubForkContributing somegithubuser
+"""]]

CVS status: use `cvs -n -q update` instead
The existing form removes directory names from the output.
The new form shows something more like what git status shows.
Fixes: https://myrepos.branchable.com/todo/CVS_status_shortened_too_much/
diff --git a/doc/todo/CVS_status_shortened_too_much.mdwn b/doc/todo/CVS_status_shortened_too_much.mdwn
index cea82d4..06a452b 100644
--- a/doc/todo/CVS_status_shortened_too_much.mdwn
+++ b/doc/todo/CVS_status_shortened_too_much.mdwn
@@ -9,3 +9,5 @@ File: Makefile          Status: Locally Modified
 File: Makefile.am       Status: Locally Modified
 
 Aha, so 3 out of 66 files named 'Makefile' are modified.
+
+[[done]] --pabs
diff --git a/mr b/mr
index 11d376e..4c62cb1 100755
--- a/mr
+++ b/mr
@@ -2414,7 +2414,7 @@ vcsh_clean =
 svn_status = svn status "$@"
 git_status = git status -s "$@" || true; git --no-pager log --branches --not --remotes --simplify-by-decoration --decorate --oneline || true; git --no-pager stash list
 bzr_status = bzr status --short "$@"; bzr missing
-cvs_status = cvs -q status | grep -E '^(File:.*Status:|\?)' | grep -v 'Status: Up-to-date' || true
+cvs_status = cvs -n -q update "$@"
 hg_status  = hg status --pager never "$@"; hg summary --pager never --quiet | grep -v 'parent: 0:'
 darcs_status = darcs whatsnew -ls "$@" || true
 fossil_status = fossil changes "$@"

Add a news page for the website that aggregates 10 news items
Will be used by the Debian upstream meta-data.
diff --git a/doc/news.mdwn b/doc/news.mdwn
new file mode 100644
index 0000000..65cc7bc
--- /dev/null
+++ b/doc/news.mdwn
@@ -0,0 +1,8 @@
+## news
+
+[[!inline pages="news/* and !*/Discussion" show="10" archive=yes]]
+
+[[!sidebar content="""
+[[install]]
+[[todo]]
+"""]]

Link to Debian bugs for a couple of TODO items
diff --git a/doc/todo/Allow_symlinked_directories.mdwn b/doc/todo/Allow_symlinked_directories.mdwn
index cb864e5..c2cf424 100644
--- a/doc/todo/Allow_symlinked_directories.mdwn
+++ b/doc/todo/Allow_symlinked_directories.mdwn
@@ -1 +1,3 @@
 Currently when a repository defined in mrconfig is a symlink to a directory/repository, myrepos simply ignores it and outputs "no repositories found to work on".
+
+Debian bug #[793381](https://bugs.debian.org/793381)
diff --git a/doc/todo/detect_unregistered_repos_in_tree.mdwn b/doc/todo/detect_unregistered_repos_in_tree.mdwn
index bc2126b..90ffa5f 100644
--- a/doc/todo/detect_unregistered_repos_in_tree.mdwn
+++ b/doc/todo/detect_unregistered_repos_in_tree.mdwn
@@ -1,3 +1,5 @@
 a way to detect repos in a tree that are not registered, and warn
 about or even auto-register them. (svn externals make this quite
 difficult!)
+
+Debian bug #[482371](https://bugs.debian.org/482371)

add news item for myrepos 1.20171231
diff --git a/doc/news/version_1.20141024.mdwn b/doc/news/version_1.20141024.mdwn
deleted file mode 100644
index 6aba492..0000000
--- a/doc/news/version_1.20141024.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-myrepos 1.20141024 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Fix name for vcsh\_clean. Closes: #[766655](https://bugs.debian.org/766655)"""]]
diff --git a/doc/news/version_1.20171231.mdwn b/doc/news/version_1.20171231.mdwn
new file mode 100644
index 0000000..fa2ba94
--- /dev/null
+++ b/doc/news/version_1.20171231.mdwn
@@ -0,0 +1,10 @@
+myrepos 1.20171231 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * [ Joey Hess ]
+   * Fix undefined value warning when using -j.
+ * [ Paul Wise ]
+   * Join the Debian package maintainers
+   * Bump Standards-Version, no changes needed
+ * [ Joey Hess ]
+   * Improve error message when system exits -1. This was incorrectly
+     displayed as a signal when in fact the program could not be run."""]]
\ No newline at end of file

diff --git a/doc/todo/Allow_symlinked_directories.mdwn b/doc/todo/Allow_symlinked_directories.mdwn
new file mode 100644
index 0000000..cb864e5
--- /dev/null
+++ b/doc/todo/Allow_symlinked_directories.mdwn
@@ -0,0 +1 @@
+Currently when a repository defined in mrconfig is a symlink to a directory/repository, myrepos simply ignores it and outputs "no repositories found to work on".

Added a comment: Clearer error
diff --git a/doc/todo/Issues_with_Bash_on_Windows/comment_2_021d89c87b746dda8696c21073bfa668._comment b/doc/todo/Issues_with_Bash_on_Windows/comment_2_021d89c87b746dda8696c21073bfa668._comment
new file mode 100644
index 0000000..c1edc8d
--- /dev/null
+++ b/doc/todo/Issues_with_Bash_on_Windows/comment_2_021d89c87b746dda8696c21073bfa668._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="DancingQuanta"
+ avatar="http://cdn.libravatar.org/avatar/e9aa3e1b35d54c698b63b33d8ec9b57d"
+ subject="Clearer error"
+ date="2017-11-15T09:17:35Z"
+ content="""
+Thank you for the clear error reporting update of `mr`.
+The hidden error turns out to be 
+```
+mr update: failed to execute: Bad file descriptor
+```
+Now I believe that WSL is responsible for this as it have incomplete Unix filesystem compared to Unix.
+Can this `Bad file descriptor` be triggered because `mr` was acting on bad file descriptor number?
+
+"""]]

Improve error message when system exits -1.
This was incorrectly displayed as a signal when in fact the program could
not be run, or wait failed.
This commit was sponsored by Fernando Jimenez on Patreon.
diff --git a/debian/changelog b/debian/changelog
index 4d51ec6..512639b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,10 @@ myrepos (1.20170130) UNRELEASED; urgency=medium
   * Join the Debian package maintainers
   * Bump Standards-Version, no changes needed
 
+  [ Joey Hess ]
+  * Improve error message when system exits -1. This was incorrectly
+    displayed as a signal when in fact the program could not be run.
+
  -- Joey Hess <id@joeyh.name>  Wed, 17 May 2017 12:07:26 -0400
 
 myrepos (1.20170129) unstable; urgency=medium
diff --git a/doc/todo/Issues_with_Bash_on_Windows/comment_1_38c15355947309d24477ea03474fe3ef._comment b/doc/todo/Issues_with_Bash_on_Windows/comment_1_38c15355947309d24477ea03474fe3ef._comment
new file mode 100644
index 0000000..f539259
--- /dev/null
+++ b/doc/todo/Issues_with_Bash_on_Windows/comment_1_38c15355947309d24477ea03474fe3ef._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2017-11-14T16:38:01Z"
+ content="""
+It seems that, when it tries to run a command that is not available, or
+if waiting for the command somehow fails, mr incorrectly interprets
+the resulting -1 exit code as a signal 127. I suspect that is what
+happened here. I've fixed mr to say "failed to execute" and give the
+system error message in this case.
+
+As to why this would happen in WSL, I don't know. Other than WSL not being
+a perfect linux system call emulation. Hopefully the above fix will let mr
+report what the actual problem is.
+"""]]
diff --git a/mr b/mr
index 8137479..6d2e750 100755
--- a/mr
+++ b/mr
@@ -824,6 +824,10 @@ sub action {
 			my $ret=runsh "$testname test", $topdir, $subdir,
 				$testcommand, [$action],
 				sub { system(shift()) };
+			if ($ret == -1) {
+				print STDERR "mr $action: failed to execute: $!\n";
+				return FAILED;
+			}
 			if ($ret != 0) {
 				if (($? & 127) == 2) {
 					print STDERR "mr $action: interrupted\n";
@@ -912,17 +916,24 @@ sub action {
 				}
 			};
 		if ($ret != 0) {
-			if (($? & 127) == 2) {
-				print STDERR "mr $action: interrupted\n";
-				return ABORT;
-			}
-			elsif ($? & 127) {
-				print STDERR "mr $action: received signal ".($? & 127)."\n";
-				return ABORT;
+			if ($ret != -1) {
+				if (($? & 127) == 2) {
+					print STDERR "mr $action: interrupted\n";
+					return ABORT;
+				}
+				elsif ($? & 127) {
+					print STDERR "mr $action: received signal ".($? & 127)."\n";
+					return ABORT;
+				}
 			}
 			print STDERR "mr $action: failed ($ret)\n" if $verbose;
 			if ($ret >> 8 != 0) {
-				print STDERR "mr $action: command failed\n";
+				if ($ret == -1) {
+					print STDERR "mr $action: failed to execute: $!\n";
+				}
+				else {
+					print STDERR "mr $action: command failed\n";
+				}
 				if (-e "$ENV{HOME}/.mrlog" && $action ne 'remember') {
 					# recreate original command line to
 					# remember, and avoid recursing
@@ -976,6 +987,10 @@ sub hook {
 				system($sh);
 			}
 		};
+	if ($ret == -1) {
+		print STDERR "mr $hook: failed to execute: $!\n";
+		return FAILED;
+	}
 	if ($ret != 0) {
 		if (($? & 127) == 2) {
 			print STDERR "mr $hook: interrupted\n";
@@ -1524,6 +1539,9 @@ sub loadconfig {
 					}
 					if (-e "$chaindir/.mrconfig") {
 						my $ret=system($value);
+						if ($ret == -1) {
+							print STDERR "mr: chain test failed to execute: $!\n";
+						}
 						if ($ret != 0) {
 							if (($? & 127) == 2) {
 								print STDERR "mr: chain test interrupted\n";

Update list of distro install commands
Add more distros and package managers.
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 291593a..6f7ac95 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -5,9 +5,16 @@ It's a simple perl script, which can be copied anywhere to install.
 Debian: `apt install myrepos`  
 Ubuntu: `apt install myrepos`  
 Fedora: `dnf install myrepos`  
+openSUSE: `zypper install mr`  
+Mageia: `urpmi myrepos`  
+Sisyphus: `sisyphus install mr`  
 Gentoo: `emerge dev-vcs/mr`  
 Arch: `pacman -S myrepos`  
+Alpine: `apk add myrepos`  
+Nix: `nix-env -i mr`  
+Guix: `guix package -i myrepos`  
 FreeBSD: `pkg install myrepos`  
 NetBSD: `pkg_add mr`  
 Homebrew: `brew install mr`  
+Linuxbrew: `brew install mr`  
 MacPorts: `port install myrepos`  

Add links to more myrepos/mr packages
Also link to Repology for convenient access to version/maintainer info.
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 1bbd5df..5d6970f 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -4,11 +4,24 @@ See also:
 [Debian](https://tracker.debian.org/pkg/myrepos),
 [Ubuntu](https://launchpad.net/ubuntu/+source/myrepos),
 [Fedora](https://apps.fedoraproject.org/packages/myrepos/),
+[openSUSE](https://software.opensuse.org/package/mr),
+[Mageia](https://madb.mageia.org/package/show/application/0/name/myrepos),
+[Sisyphus](http://www.sisyphus.ru/en/srpm/Sisyphus/mr),
 [Gentoo](https://packages.gentoo.org/package/dev-vcs/mr),
+[Funtoo](https://github.com/funtoo/dev-kit/tree/master/dev-vcs/mr),
 [AUR](https://aur.archlinux.org/packages/myrepos/)
 ([git](https://aur.archlinux.org/packages/myrepos/)),
+[Alpine Linux](https://pkgs.alpinelinux.org/packages?name=myrepos),
+[nixpkgs](https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/version-management/mr),
+[GNU Guix](https://www.gnu.org/software/guix/packages/m.html#myrepos),
 [FreeBSD](https://www.freebsd.org/cgi/ports.cgi?stype=all&query=myrepos),
-[NetBSD](http://pkgsrc.se/devel/mr).
+[NetBSD](http://pkgsrc.se/devel/mr),
+[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])).
 
 [[!inline pages="./todo/* and !./todo/done and !link(done)
 and !*/Discussion" actions=yes postform=yes show=0 archive=yes]]

Add links to more related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 2b9f17d..e2c6c3e 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -89,6 +89,8 @@ Some more examples of things it can do include:
 * [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
+* [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
 
 ## news
 

Add links to some extensions and more related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index c2d57ee..2b9f17d 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -76,10 +76,19 @@ Some more examples of things it can do include:
 * Manage your whole home directory in version control.
   (See [VCS-Home](https://vcs-home.branchable.com/))
 
+## extensions
+
+* [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
+
 ## related software
 
 * [repo](https://android.googlesource.com/tools/repo): git repository management tool
+* [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
 
 ## news
 
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 b62a14d..b675a12 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
@@ -5,3 +5,5 @@ But this is very hard to discover.
 I wonder what other great additions I'm missing out on? If the canonical `myrepos` repo + website would list contributions/extensions, that'd IMHO greatly enhance the ecosystem!
 
 P.S.: thanks again for this excellent tool. A happy user for 4 years now.
+
+[[done]] --pabs

Strip trailing white-space
Suggested-by: $EDITOR
Suggested-by: git
Suggested-by: podchecker
*** WARNING: line containing nothing but whitespace in paragraph at line 436 in file ./mr
./mr pod syntax OK.
diff --git a/debian/changelog b/debian/changelog
index 0df78b6..d7717cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -208,7 +208,7 @@ mr (1.13) unstable; urgency=low
 mr (1.12) unstable; urgency=low
 
   * Ignore nonzero exit status of hg pull, which can happen
-    when there were no changes to pull. Closes: #661870 
+    when there were no changes to pull. Closes: #661870
   * Add vcsh to Suggests.
   * Recognize a repo with a .git file as a git repo.
   * Improve bzr register's heuristics to determine upstream repo.
@@ -247,7 +247,7 @@ mr (1.08) unstable; urgency=low
 mr (1.07) unstable; urgency=low
 
   * Added support for vcsh, enable with: include = cat /usr/share/mr/vcsh
-    Thanks, Richard Hartmann 
+    Thanks, Richard Hartmann
   * Block tty control codes in untrusted mr config files.
   * Correct printing of line numbers when includes are used. Closes: #650952
   * The previous fix for chaining to absolute paths broke chaining to relative
@@ -452,7 +452,7 @@ mr (0.38) unstable; urgency=low
 
 mr (0.37) unstable; urgency=low
 
-  * Add "gitless" file to lib. 
+  * Add "gitless" file to lib.
     This adds a special type of git repository, where the .git directory
     is stored on a file server, to avoid wasting space with it on the client.
   * Revert buggy change to directory printing code.
@@ -483,7 +483,7 @@ mr (0.34) unstable; urgency=low
 
 mr (0.33) unstable; urgency=low
 
-  * Add a push subcommand, which pushes committed changes for DCVS, and 
+  * Add a push subcommand, which pushes committed changes for DCVS, and
     does nothing for svn/cvs. Closes: #491865
 
  -- Joey Hess <joeyh@debian.org>  Tue, 22 Jul 2008 15:22:01 -0400
diff --git a/doc/index.mdwn b/doc/index.mdwn
index c608150..c2d57ee 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -28,11 +28,11 @@ of other commands. These work no matter which version control system is
 used for a repository. Of course, you can still use the native version
 control commands too.
 
-Oh, and you can abbreviate any command to any unambiguous abbreviation. 
+Oh, and you can abbreviate any command to any unambiguous abbreviation.
 `mr up`, `mr pu`, etc.
 
 Now, maybe you find that you always want to update one repository using
-`git pull --rebase`, instead of the default `git pull` that `mr update` runs. 
+`git pull --rebase`, instead of the default `git pull` that `mr update` runs.
 No problem: The `~/.mrconfig` file makes it easy to override the command
 run for any repository. It's like a `Makefile` for repositories.
 
@@ -43,14 +43,14 @@ run for any repository. It's like a `Makefile` for repositories.
 You can make up your own commands too:
 
 	[bar]
-	# This repository has an upstream, which I've forked; 
+	# This repository has an upstream, which I've forked;
 	# set up a remote on checkout.
-	checkout = 
+	checkout =
 		git clone git@github.com:joeyh/bar.git
 		cd bar
 		git remote add upstream git@github.com:barbar/bar.git
 	# make `mr zap` integrate from upstream
-	zap = 
+	zap =
 		git pull upstream
 		git merge upstream/master
 		git push origin master
@@ -86,6 +86,6 @@ Some more examples of things it can do include:
 [[!inline pages="news/* and !*/Discussion" show="4" archive=yes]]
 
 [[!sidebar content="""
-[[install]]  
-[[todo]]  
+[[install]]
+[[todo]]
 """]]
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 1396873..291593a 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -1,4 +1,4 @@
-`git clone git://myrepos.branchable.com/ myrepos`  
+`git clone git://myrepos.branchable.com/ myrepos`
 
 It's a simple perl script, which can be copied anywhere to install.
 
diff --git a/doc/todo/CVS_status_shortened_too_much.mdwn b/doc/todo/CVS_status_shortened_too_much.mdwn
index d042843..cea82d4 100644
--- a/doc/todo/CVS_status_shortened_too_much.mdwn
+++ b/doc/todo/CVS_status_shortened_too_much.mdwn
@@ -8,4 +8,4 @@ File: Makefile          Status: Locally Modified
 File: Makefile          Status: Locally Modified
 File: Makefile.am       Status: Locally Modified
 
-Aha, so 3 out of 66 files named 'Makefile' are modified. 
+Aha, so 3 out of 66 files named 'Makefile' are modified.
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 30c93e3..8ecdea1 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
@@ -10,13 +10,13 @@ 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**  
->  
+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**
+>
 > This was easily resolved by adding `update = :` to the [tmp] section. [git repository containing proposed change](https://github.com/tomhoover/myrepos/tree/dummy-target).
 
 2. I now discovered that the [tmp] target was not being executed after all other targets (as the `order = 25` should have required). NOTE: none of my other targets have an **order** setting of greater than **15**.
-> I normally have `jobs = 5` set in my .mrconfig file--changing this to `jobs = 1` resulted in the desired behavior.  
+> I normally have `jobs = 5` set in my .mrconfig file--changing this to `jobs = 1` resulted in the desired behavior.
 
 **Enhancement Request:**
 
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
index 1ab2b02..98f342c 100644
--- a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
@@ -23,7 +23,7 @@ I think there are probably two ways `order` might be used:
    linux repo updated concurrently.
 
 These are both valid; might be better to keep order as it is to handle #2,
-and add a more formal dependency mechanism for #1. 
+and add a more formal dependency mechanism for #1.
 
 The use of a dummy target to run a `fixups` at the end of the update, which
 is what we're both using `order` for suggests a simpler approach: Just make
diff --git a/lib/git-fake-bare b/lib/git-fake-bare
index 5091d95..d59e3fe 100644
--- a/lib/git-fake-bare
+++ b/lib/git-fake-bare
@@ -63,7 +63,7 @@ git_fake_bare_commit =
 git_fake_bare_push =
 	GIT_DIR="$MR_REPO" git push --all
 
-git_fake_bare_record = 
+git_fake_bare_record =
 	cd "$(git_get_worktree)"
 	GIT_DIR="$MR_REPO" git commit -a "$@"
 
@@ -73,7 +73,7 @@ git_fake_bare_diff =
 
 git_fake_bare_log = GIT_DIR="$MR_REPO" git log "$@"
 
-git_fake_bare_register = 
+git_fake_bare_register =
 	url="$(LC_ALL=C GIT_CONFIG=config git config --get remote.origin.url)" || true
 	if [ -z "$url" ]; then
 		error "cannot determine git url"
diff --git a/lib/stow b/lib/stow
index aa1e857..328106c 100644
--- a/lib/stow
+++ b/lib/stow
@@ -1,7 +1,7 @@
 # Plug-in to use GNU Stow to manage symlinks whose targets lie in a
 # repository managed with myrepos
 #
-# The standard use case is for managing symlinks to dotfiles 
+# The standard use case is for managing symlinks to dotfiles
 # inside one's home directory.
 #
 # Original author (2011):
diff --git a/lib/unison b/lib/unison
index ffe5205..9bde909 100644
--- a/lib/unison
+++ b/lib/unison
@@ -1,5 +1,5 @@
 # This allows using unison as a "version control system" with mr.
-# 
+#
 # You need to configure unison by setting up files in ~/.unison named
 # the same as the basenames of the directories you want to sync, and
 # containing unison configuration to sync them.
diff --git a/mr b/mr
index c415392..f2fb1a3 100755
--- a/mr
+++ b/mr
@@ -381,7 +381,7 @@ All other sections add repositories. The section header specifies the
 directory where the repository is located. This is relative to the directory
 that contains the mrconfig file, but you can also choose to use absolute
 paths. (Note that you can use environment variables in section names; they
-will be passed through the shell for expansion. For example, 
+will be passed through the shell for expansion. For example,
 C<[$HOSTNAME]>, or C<[${HOSTNAME}foo]>).
 
 Within a section, each setting defines a shell command to run to handle a
@@ -400,7 +400,7 @@ C<$@>. All commands other than "checkout" are run inside the repository,

(Diff truncated)
Fix typos
Suggested-by: codespell
Suggested-by: spellintian
diff --git a/debian/changelog b/debian/changelog
index f659326..bc1dc81 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -264,7 +264,7 @@ mr (1.07) unstable; urgency=low
 
 mr (1.06) unstable; urgency=low
 
-  * Fix propigation of failure from pre and post hooks and from fixups.
+  * Fix propagation of failure from pre and post hooks and from fixups.
   * Support chaining to absolute paths.
   * Add support for skip = lazy, a mode where mr only operates on repositories
     that are checked out.
diff --git a/debian/control b/debian/control
index 5493448..5e6b6af 100644
--- a/debian/control
+++ b/debian/control
@@ -40,7 +40,7 @@ Recommends:
  perl
 Description: tool to manage all your version control repos
  The mr(1) command can checkout, update, or perform other actions on
- a set of repositories as if they were one combined respository. It
+ a set of repositories as if they were one combined repository. It
  supports any combination of git, svn, mercurial, bzr, darcs, cvs, vcsh,
  fossil, and veracity repositories, and support for other version control
  systems can easily be added. (There are extensions adding support for unison
diff --git a/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment b/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment
index a30c2cb..3e51a88 100644
--- a/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment
+++ b/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment
@@ -7,6 +7,6 @@ I like this idea, and it seems fine to change the default `mr register`
 behavior like this.
 
 The TODOs need to be dealt with or removed before I can merge it.
-Git remote names *are* allowed to contain ".", altough they cannot start
+Git remote names *are* allowed to contain ".", although they cannot start
 with it.
 """]]
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
index 98f342c..9a8ca55 100644
--- a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
@@ -13,7 +13,7 @@ guarantee that.
 
 I think there are probably two ways `order` might be used:
 
-1. To make a dependant repository be processed after another one. I use it
+1. To make a dependent repository be processed after another one. I use it
    this way myself. Broken by --jobs.
 2. To eg, sort more expensive or less important repositories later. For
    example, I used to keep a clone of the linux git repo, but it's very

Fix typo
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 1a8ec10..c608150 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -62,7 +62,7 @@ You can even define commands globally, so `mr` can use them in all repositories.
 	git_gc = git gc "$@"
 
 This only scratches the surface of the ways you can use myrepos to automate
-and mange your repositories!
+and manage your repositories!
 
 Some more examples of things it can do include:
 

Add a section on the front page about related software
diff --git a/doc/index.mdwn b/doc/index.mdwn
index a4cafc1..1a8ec10 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -76,6 +76,11 @@ Some more examples of things it can do include:
 * Manage your whole home directory in version control.
   (See [VCS-Home](https://vcs-home.branchable.com/))
 
+## related software
+
+* [repo](https://android.googlesource.com/tools/repo): git repository management tool
+* [VCS](http://www.greenend.org.uk/rjk/vcs/): a wrapper for version control systems
+
 ## news
 
 [[!inline pages="news/* and !*/Discussion" show="4" archive=yes]]

restore trailing spaces to fix line breaks
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 2278b86..1396873 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -2,12 +2,12 @@
 
 It's a simple perl script, which can be copied anywhere to install.
 
-Debian: `apt install myrepos`
-Ubuntu: `apt install myrepos`
-Fedora: `dnf install myrepos`
-Gentoo: `emerge dev-vcs/mr`
-Arch: `pacman -S myrepos`
-FreeBSD: `pkg install myrepos`
-NetBSD: `pkg_add mr`
-Homebrew: `brew install mr`
-MacPorts: `port install myrepos`
+Debian: `apt install myrepos`  
+Ubuntu: `apt install myrepos`  
+Fedora: `dnf install myrepos`  
+Gentoo: `emerge dev-vcs/mr`  
+Arch: `pacman -S myrepos`  
+FreeBSD: `pkg install myrepos`  
+NetBSD: `pkg_add mr`  
+Homebrew: `brew install mr`  
+MacPorts: `port install myrepos`  

My patches got merged since I got commit access
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index 71dae59..40c4fdf 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -20,3 +20,5 @@ cc24aa1 Cope with the transition from ack-grep to ack in Debian
 9e740ff Ignore the return value from grep and ack-grep subcommands.
 cabc3e2 Erase to the end of the line when exiting
 ```
+
+[[done]]

Issues with Bash on Windows getting 127 on action
diff --git a/doc/todo/Issues_with_Bash_on_Windows.mdwn b/doc/todo/Issues_with_Bash_on_Windows.mdwn
new file mode 100644
index 0000000..7580bdc
--- /dev/null
+++ b/doc/todo/Issues_with_Bash_on_Windows.mdwn
@@ -0,0 +1,14 @@
+I tried `mr` out on `Bash on Windows`.
+I found that `mr` does not work so well.
+
+Steps to reproduce the problem:
+
+```
+15:12:57 Andrew@LAPTOP-V9S562AR:~
+$ mr s
+mr s: /home/Andrew/.config/vcsh/repo.d/author.git
+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`.

auto-adding other remotes
diff --git a/doc/todo/scheme_for_managing_Forks.mdwn b/doc/todo/scheme_for_managing_Forks.mdwn
new file mode 100644
index 0000000..a36b881
--- /dev/null
+++ b/doc/todo/scheme_for_managing_Forks.mdwn
@@ -0,0 +1,7 @@
+My last feature request today, I promise!
+
+A workflow that is common for Github-style hosting sites is for there to be a canonical repo for a given software project, and for contributors to have a separate "fork" of that repository, to which they push changes. The changes are merged into the canonical repository by way of Pull Requests, an out-of-band process (from the pov of command line git).
+
+I've just cloned 27 github repositories that belong to a given organisation and I wish to configure an additional remote, corresponding to my github fork, for each repo. It would be nice if mr could facilitate this in an organised way; in  addition, repositories in this github organisation (or put it another way, in this part of my filesystem hierarchy) might come and go over time (see [[nicities when working with github and similar]]).
+
+-- [Jonathan Dowland](https://jmtd.net/)

feature request: move repositories
diff --git a/doc/todo/command_to_move_or_rename_repositories.mdwn b/doc/todo/command_to_move_or_rename_repositories.mdwn
new file mode 100644
index 0000000..c0d0784
--- /dev/null
+++ b/doc/todo/command_to_move_or_rename_repositories.mdwn
@@ -0,0 +1,5 @@
+It would be useful to be able to easily move or rename repositories, e.g.
+
+    mr move historicrepo old/historicrepo
+
+Updating the relevant mrconfig(s) accordingly. -- [Jonathan Dowland](https://jmtd.net/)

feature request: github/gh-style organisation tracking
diff --git a/doc/todo/nicities_when_working_with_github_and_similar.mdwn b/doc/todo/nicities_when_working_with_github_and_similar.mdwn
new file mode 100644
index 0000000..1b7762a
--- /dev/null
+++ b/doc/todo/nicities_when_working_with_github_and_similar.mdwn
@@ -0,0 +1 @@
+I am using `mr` to manage/track repositories for a team which uses one or more github Organisations. It would be nice if mr was able to notice when a new repository was added for a given github organisation, and automatically clone it / add it to the set of locally cloned/tracked repositories. I suppose it could associate a particular local directory path with an Organisation name. Likewise I suppose for other github-style things. I found this simple python script to list all repositories under an organisationhttps://gist.github.com/ralphbean/5733076 which uses a python module pygithub3, I'm guessing there's likely a REST API. -- [Jonathan Dowland](https://jmtd.net/)

bug report
diff --git a/doc/todo/mr_config_chained_repo_section_name_issue.mdwn b/doc/todo/mr_config_chained_repo_section_name_issue.mdwn
new file mode 100644
index 0000000..5bb4a45
--- /dev/null
+++ b/doc/todo/mr_config_chained_repo_section_name_issue.mdwn
@@ -0,0 +1,24 @@
+`mr config` has confusing behavior when used with chained mrconfig files.
+
+For example, I have ~/.mrconfig which defines a git-annex repository.
+And chains to ~/src/.mrconfig, which defines a git-annex repisoitory too.
+Those are separate repositories in different locations. But, if
+I run `mr config git-annex checkout`, it prints out the checkout
+actions for both repositories.
+
+Another example, my ~/.mrconfig defines a "." repository, which goes
+in my $HOME. If I run `mr config . checkout`, it prints out the checkout
+command for that repsitory, even when I'm in some other repository. Which
+is pretty confusing behavior!
+
+This might be especially bad when using mr config to change settings.
+I have not dared to try it.
+
+Looking at the code to `sub config`, it just iterates over each config
+and if it contains a section named like the basename of the repository,
+prints its config.
+
+To fix it, it seems that it would need to pay attention to where it's
+run. This would be a behavior change, and there's some chance it might
+break something.
+--[[Joey]]

more
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index 1e63289..71dae59 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -6,6 +6,7 @@ https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
 
 ```
 $ git log --oneline
+a0c46bd Fix home directory handling
 6afdd95 vis: pass arguments to the commands
 145454d webcheckout: consider https URLs to be anonymous too
 4154b26 Switch URLs from http to https where possible

one more commit
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index 64da4bc..1e63289 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -6,6 +6,7 @@ https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
 
 ```
 $ git log --oneline
+6afdd95 vis: pass arguments to the commands
 145454d webcheckout: consider https URLs to be anonymous too
 4154b26 Switch URLs from http to https where possible
 8c81c1d vis: fall back from GUI to terminal tools when no X11 display is available

more commits
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index 81db4e9..64da4bc 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -6,6 +6,9 @@ https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
 
 ```
 $ git log --oneline
+145454d webcheckout: consider https URLs to be anonymous too
+4154b26 Switch URLs from http to https where possible
+8c81c1d vis: fall back from GUI to terminal tools when no X11 display is available
 84583ce Pass -a to darcs fetch command
 0091d74 Update list of distro install commands
 692adf9 Replace Debian BTS link with myrepos/mr pages for many distros.

Switch URLs from http to https where possible
https URLs are more secure.
diff --git a/README b/README
index 750186d..707f7c3 100644
--- a/README
+++ b/README
@@ -9,7 +9,7 @@ control repositories.
 It supports git, svn, mercurial, bzr, darcs, cvs, fossil and veracity.
 
 Author: Joey Hess
-Homepage: http://myrepos.branchable.com/
+Homepage: https://myrepos.branchable.com/
 
 The mr command is intended to be very self-contained, since it might be
 useful to check it into ~/bin when keeping your home in version control. It
@@ -30,4 +30,4 @@ each, run "mr commit". To check the status of each, you could run
 "mr status".
 
 For further details, and lots of configuration options, see the mr(1) man
-page or the website, http://myrepos.branchable.com/
+page or the website, https://myrepos.branchable.com/
diff --git a/debian/changelog b/debian/changelog
index e6a0df5..0df78b6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -461,7 +461,7 @@ mr (0.37) unstable; urgency=low
 
 mr (0.36) unstable; urgency=low
 
-  * Add webcheckout command. See <http://kitenet.net/~joey/rfc/rel-vcs/>
+  * Add webcheckout command. See <https://joeyh.name/rfc/rel-vcs/>
   * Fix display of repos configured at absolute path locations.
 
  -- Joey Hess <joeyh@debian.org>  Sat, 10 Jan 2009 16:42:07 -0500
diff --git a/debian/control b/debian/control
index 0e6818d..feb4b58 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Build-Depends:
  dpkg-dev (>= 1.9.0)
 Maintainer: Richard Hartmann <richih@debian.org>
 Standards-Version: 3.9.6
-Homepage: http://myrepos.branchable.com/
+Homepage: https://myrepos.branchable.com/
 Vcs-Git: git://myrepos.branchable.com/
 
 Package: myrepos
diff --git a/debian/copyright b/debian/copyright
index 9c2279e..d9abd9b 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,4 +1,4 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
 Files: *
 Copyright: (c) 2007-2011 Joey Hess <joeyh@debian.org>
diff --git a/doc/index.mdwn b/doc/index.mdwn
index e0b28bf..a4cafc1 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -74,7 +74,7 @@ Some more examples of things it can do include:
   with its own top-level `.mrconfig` file that lists them and can be
   chain loaded from `~/.mrconfig`.
 * Manage your whole home directory in version control.
-  (See [VCS-Home](http://vcs-home.branchable.com/))
+  (See [VCS-Home](https://vcs-home.branchable.com/))
 
 ## news
 
diff --git a/doc/news/version_1.20141024.mdwn b/doc/news/version_1.20141024.mdwn
index 2de1be9..6aba492 100644
--- a/doc/news/version_1.20141024.mdwn
+++ b/doc/news/version_1.20141024.mdwn
@@ -1,3 +1,3 @@
 myrepos 1.20141024 released with [[!toggle text="these changes"]]
 [[!toggleable text="""
-   * Fix name for vcsh\_clean. Closes: #[766655](http://bugs.debian.org/766655)"""]]
\ No newline at end of file
+   * Fix name for vcsh\_clean. Closes: #[766655](https://bugs.debian.org/766655)"""]]
diff --git a/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
index 0b704cb..b86579e 100644
--- a/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
+++ b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
@@ -1,3 +1,3 @@
-When a new todo item is created on the myrepos "todo" list (here on branchable), none of the comments are viewable. I only noticed you commented on my [post](http://myrepos.branchable.com/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/) when I saw a [new commit](https://github.com/joeyh/myrepos/commits/master). I wasn't able to add another comment there, either (I edited my original comment to try to let you know, but I'm guessing you weren't notified). I'm not the only one who has seen this issue--please see the statement in the last line of this [item](http://myrepos.branchable.com/todo/add-all-git-remotes/).
+When a new todo item is created on the myrepos "todo" list (here on branchable), none of the comments are viewable. I only noticed you commented on my [post](https://myrepos.branchable.com/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/) when I saw a [new commit](https://github.com/joeyh/myrepos/commits/master). I wasn't able to add another comment there, either (I edited my original comment to try to let you know, but I'm guessing you weren't notified). I'm not the only one who has seen this issue--please see the statement in the last line of this [item](https://myrepos.branchable.com/todo/add-all-git-remotes/).
 
 [[done]]
diff --git a/lib/repo b/lib/repo
index 3a4fafd..92c8f21 100644
--- a/lib/repo
+++ b/lib/repo
@@ -1,5 +1,5 @@
 # Adds support for repo repositories.
-# http://source.android.com/source/version-control.html
+# https://source.android.com/source/developing
 
 # To make mr use this file, add a line like this inside the [DEFAULT]
 # section of your ~/.mrconfig
diff --git a/mr b/mr
index 087fbb8..984991f 100755
--- a/mr
+++ b/mr
@@ -578,7 +578,7 @@ Copyright 2007-2011 Joey Hess <joey@kitenet.net>
 
 Licensed under the GNU GPL version 2 or higher.
 
-http://myrepos.branchable.com/
+https://myrepos.branchable.com/
 
 =cut
 
diff --git a/webcheckout b/webcheckout
index e48d9de..1c953db 100755
--- a/webcheckout
+++ b/webcheckout
@@ -17,7 +17,7 @@ appropriate for that repository (git, svn, etc).
 
 The information about the repositories is embedded in the web page using
 the rel=vcs-* microformat, which is documented at
-<http://kitenet.net/~joey/rfc/rel-vcs/>.
+<https://joeyh.name/rfc/rel-vcs/>.
 
 If the optional destdir parameter is specified, VCS programs will be asked
 to check out repositories into that directory. If there are multiple
@@ -61,7 +61,7 @@ Copyright 2009 Joey Hess <joey@kitenet.net>
 
 Licensed under the GNU GPL version 2 or higher.
 
-This program is included in myrepos <http://myrepos.branchable.com/>
+This program is included in myrepos <https://myrepos.branchable.com/>
 
 =cut
 

one more
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index d57164d..81db4e9 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -6,6 +6,7 @@ https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
 
 ```
 $ git log --oneline
+84583ce Pass -a to darcs fetch command
 0091d74 Update list of distro install commands
 692adf9 Replace Debian BTS link with myrepos/mr pages for many distros.
 cc24aa1 Cope with the transition from ack-grep to ack in Debian

update list of patches
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
index b5ccf0f..d57164d 100644
--- a/doc/todo/patches_from_pabs.mdwn
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -5,7 +5,9 @@ https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
 ```
 
 ```
-$ git log --oneline 
+$ git log --oneline
+0091d74 Update list of distro install commands
+692adf9 Replace Debian BTS link with myrepos/mr pages for many distros.
 cc24aa1 Cope with the transition from ack-grep to ack in Debian
 91def65 Ignore new debhelper cruft
 2e8aa85 Synchronise git_svn_status with git_status

Update list of distro install commands
Add more distros.
Switch Debian to apt.
Remove some trailing whitespace.
diff --git a/doc/install.mdwn b/doc/install.mdwn
index edfb05d..2278b86 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -2,7 +2,12 @@
 
 It's a simple perl script, which can be copied anywhere to install.
 
-Debian: `apt-get install myrepos`  
-Homebrew: `brew install mr`  
-FreeBSD: `pkg install myrepos`  
+Debian: `apt install myrepos`
+Ubuntu: `apt install myrepos`
+Fedora: `dnf install myrepos`
 Gentoo: `emerge dev-vcs/mr`
+Arch: `pacman -S myrepos`
+FreeBSD: `pkg install myrepos`
+NetBSD: `pkg_add mr`
+Homebrew: `brew install mr`
+MacPorts: `port install myrepos`

Replace Debian BTS link with myrepos/mr pages for many distros.
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 417d7c2..1bbd5df 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -1,6 +1,14 @@
 This is myrepos's todo list. Link items to [[todo/done]] when done.
 
-See also: [Debian BTS](http://bugs.debian.org/mr).
+See also:
+[Debian](https://tracker.debian.org/pkg/myrepos),
+[Ubuntu](https://launchpad.net/ubuntu/+source/myrepos),
+[Fedora](https://apps.fedoraproject.org/packages/myrepos/),
+[Gentoo](https://packages.gentoo.org/package/dev-vcs/mr),
+[AUR](https://aur.archlinux.org/packages/myrepos/)
+([git](https://aur.archlinux.org/packages/myrepos/)),
+[FreeBSD](https://www.freebsd.org/cgi/ports.cgi?stype=all&query=myrepos),
+[NetBSD](http://pkgsrc.se/devel/mr).
 
 [[!inline pages="./todo/* and !./todo/done and !link(done)
 and !*/Discussion" actions=yes postform=yes show=0 archive=yes]]

add request to merge my patches
diff --git a/doc/todo/patches_from_pabs.mdwn b/doc/todo/patches_from_pabs.mdwn
new file mode 100644
index 0000000..b5ccf0f
--- /dev/null
+++ b/doc/todo/patches_from_pabs.mdwn
@@ -0,0 +1,14 @@
+Please merge the patches from the master branch of my repo:
+
+```
+https://anonscm.debian.org/cgit/users/pabs/myrepos.git/
+```
+
+```
+$ git log --oneline 
+cc24aa1 Cope with the transition from ack-grep to ack in Debian
+91def65 Ignore new debhelper cruft
+2e8aa85 Synchronise git_svn_status with git_status
+9e740ff Ignore the return value from grep and ack-grep subcommands.
+cabc3e2 Erase to the end of the line when exiting
+```

add gentoo install instructions
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 66bb6cc..edfb05d 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -5,3 +5,4 @@ It's a simple perl script, which can be copied anywhere to install.
 Debian: `apt-get install myrepos`  
 Homebrew: `brew install mr`  
 FreeBSD: `pkg install myrepos`  
+Gentoo: `emerge dev-vcs/mr`

the github mirror has been removed due to their horrible new anti-GPL TOS
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 0599b71..66bb6cc 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -1,5 +1,4 @@
 `git clone git://myrepos.branchable.com/ myrepos`  
-Or get it [from github](https://github.com/joeyh/myrepos).
 
 It's a simple perl script, which can be copied anywhere to install.
 

comment
diff --git a/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers/comment_1_626017f1808b990bceda431ed3a75284._comment b/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers/comment_1_626017f1808b990bceda431ed3a75284._comment
new file mode 100644
index 0000000..afce0e3
--- /dev/null
+++ b/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers/comment_1_626017f1808b990bceda431ed3a75284._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2017-01-31T15:11:08Z"
+ content="""
+This website is a wiki, so you can edit the main page, add a link to a new
+page listing myrepos addons. I agree this would be a good idea; don't think
+I heard of mr-drupal before.
+"""]]

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 1a7bbce..b62a14d 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 <http://wimleers.com/article/mr-drupal>.
 
 But this is very hard to discover.
 

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
new file mode 100644
index 0000000..1a7bbce
--- /dev/null
+++ b/doc/todo/Discoverability_of_mr_VCS_types__47__modules__47__handlers.mdwn
@@ -0,0 +1,7 @@
+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.
+
+But this is very hard to discover.
+
+I wonder what other great additions I'm missing out on? If the canonical `myrepos` repo + website would list contributions/extensions, that'd IMHO greatly enhance the ecosystem!
+
+P.S.: thanks again for this excellent tool. A happy user for 4 years now.

Added a comment
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_3_2c82a7a0cd5b4d0a155bdcca0955a64a._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_3_2c82a7a0cd5b4d0a155bdcca0955a64a._comment
new file mode 100644
index 0000000..c45d6bf
--- /dev/null
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_3_2c82a7a0cd5b4d0a155bdcca0955a64a._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="work@2755f4a6f2444f511295fe4cbe38b246105ca833"
+ nickname="work"
+ avatar="http://cdn.libravatar.org/avatar/d0d17378b21f669a28ac7ea4013091f7"
+ subject="comment 3"
+ date="2017-01-29T23:11:17Z"
+ content="""
+> Just make fixups commands be run after all repositories are updated, instead of the current behavior of running them when the repository that defines them is updated.
+
+This is honestly exactly how I thought it was meant to work when I started using `mr`. It's always been confusing to me that it doesn't work this way. So, insofar voting is relevant: +1 :)
+"""]]

add news item for myrepos 1.20170129
diff --git a/doc/news/version_1.20141023.mdwn b/doc/news/version_1.20141023.mdwn
deleted file mode 100644
index 4664ce1..0000000
--- a/doc/news/version_1.20141023.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-myrepos 1.20141023 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Add darcs grep command using ack-grep.
-     Thanks, Paul Wise.
-   * Add a clean command.
-     Thanks, Paul Wise. Closes: #[702685](http://bugs.debian.org/702685)"""]]
\ No newline at end of file
diff --git a/doc/news/version_1.20170129.mdwn b/doc/news/version_1.20170129.mdwn
new file mode 100644
index 0000000..e4713a1
--- /dev/null
+++ b/doc/news/version_1.20170129.mdwn
@@ -0,0 +1,12 @@
+myrepos 1.20170129 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Strip .git extension when registering vsch repositories.
+     Thanks, Don March
+   * Disable git pager when mr status runs git stash list.
+   * Added stow library. This lets dotfiles in repositories managed by mr
+     be symlinked into the home directory by GNU stow.
+     Thanks, Sean Whitton and Adam Spiers.
+   * cvs\_status: do not fail when all files are up to date.
+     Thanks, Paul Wise.
+   * Added dgit plugin.
+     Thanks, Sean Whitton."""]]
\ No newline at end of file

merged
diff --git a/doc/todo/updates_to_stow_lib.mdwn b/doc/todo/updates_to_stow_lib.mdwn
index f8af00c..c554bdf 100644
--- a/doc/todo/updates_to_stow_lib.mdwn
+++ b/doc/todo/updates_to_stow_lib.mdwn
@@ -7,3 +7,5 @@ Changes:
 * minor doc tweaks
 
 --spwhitton
+
+> merged [[done]] --[[Joey]]

Added dgit plugin. Thanks, Sean Whitton.
diff --git a/debian/changelog b/debian/changelog
index c6ee061..c6a4ab0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,8 @@ myrepos (1.20160123) UNRELEASED; urgency=medium
     Thanks, Sean Whitton and Adam Spiers.
   * cvs_status: do not fail when all files are up to date.
     Thanks, Paul Wise.
+  * Added dgit plugin.
+    Thanks, Sean Whitton.
 
  -- Joey Hess <id@joeyh.name>  Sat, 02 Apr 2016 15:10:58 -0400
 
diff --git a/doc/todo/dgit_plugin.mdwn b/doc/todo/dgit_plugin.mdwn
index 84cdb72..a6b03fc 100644
--- a/doc/todo/dgit_plugin.mdwn
+++ b/doc/todo/dgit_plugin.mdwn
@@ -3,3 +3,5 @@ Please consider merging branch `dgit` of repo `https://git.spwhitton.name/myrepo
 Adds a new plugin to make life easier for dgit users.  Please see comments in the file for info about some of the design choices.
 
 --spwhitton
+
+> merged [[done]] --[[Joey]]

remove flattr button
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 7497aad..e0b28bf 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -83,5 +83,4 @@ Some more examples of things it can do include:
 [[!sidebar content="""
 [[install]]  
 [[todo]]  
-<a href="https://flattr.com/thing/39937/mr1" target="_blank"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>  
 """]]

submit dgit lib merge request
diff --git a/doc/todo/dgit_plugin.mdwn b/doc/todo/dgit_plugin.mdwn
new file mode 100644
index 0000000..84cdb72
--- /dev/null
+++ b/doc/todo/dgit_plugin.mdwn
@@ -0,0 +1,5 @@
+Please consider merging branch `dgit` of repo `https://git.spwhitton.name/myrepos`
+
+Adds a new plugin to make life easier for dgit users.  Please see comments in the file for info about some of the design choices.
+
+--spwhitton

submit merge request
diff --git a/doc/todo/updates_to_stow_lib.mdwn b/doc/todo/updates_to_stow_lib.mdwn
new file mode 100644
index 0000000..f8af00c
--- /dev/null
+++ b/doc/todo/updates_to_stow_lib.mdwn
@@ -0,0 +1,9 @@
+Please consider merging branch `stow-lib` of repo `https://git.spwhitton.name/myrepos`.
+
+Changes:
+
+* drastically simplify lib & workflow docs using stow's `--adopt` mode -- removes lots of shell code
+* fix usage when $HOME contains unresolved symlinks
+* minor doc tweaks
+
+--spwhitton

diff --git a/doc/todo/repository_tags.mdwn b/doc/todo/repository_tags.mdwn
new file mode 100644
index 0000000..491641c
--- /dev/null
+++ b/doc/todo/repository_tags.mdwn
@@ -0,0 +1 @@
+It would be nice to be able to tag repositories and then have commands only apply to some subset of them. For example, some repos might be built with Python's setup.py while others with plain make. It'd be nice to be able to mark commands as only making sense for certain tags.

Added a comment: Overwriting cvs_status failed
diff --git a/doc/todo/CVS_status_shortened_too_much/comment_3_b3e6644ee3a1712681269a2802175858._comment b/doc/todo/CVS_status_shortened_too_much/comment_3_b3e6644ee3a1712681269a2802175858._comment
new file mode 100644
index 0000000..ce6f175
--- /dev/null
+++ b/doc/todo/CVS_status_shortened_too_much/comment_3_b3e6644ee3a1712681269a2802175858._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="HBBroeker@7b8f56781fb3120ee02aa80d45117f3a3c4b162f"
+ nickname="HBBroeker"
+ avatar="http://cdn.libravatar.org/avatar/68dceeadd8964493ad730b8dba6cc4a1"
+ subject="Overwriting cvs_status failed"
+ date="2016-11-02T21:57:44Z"
+ content="""
+As per your suggestion, I did try to override the \"cvs_status\" in my ~/.mrconfig, but
+
+    mr config DEFAULT cvs_status='cvs -n -q update'
+
+had no noticeable effect.  \"mr status\" after this still uses the command in the \"mr\" script instead of my own one.
+"""]]

Added a comment: An easier approach
diff --git a/doc/todo/CVS_status_shortened_too_much/comment_2_e1e49339e2972147bc79ea4727bfae26._comment b/doc/todo/CVS_status_shortened_too_much/comment_2_e1e49339e2972147bc79ea4727bfae26._comment
new file mode 100644
index 0000000..cb2fc00
--- /dev/null
+++ b/doc/todo/CVS_status_shortened_too_much/comment_2_e1e49339e2972147bc79ea4727bfae26._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="HBBroeker@7b8f56781fb3120ee02aa80d45117f3a3c4b162f"
+ nickname="HBBroeker"
+ avatar="http://cdn.libravatar.org/avatar/68dceeadd8964493ad730b8dba6cc4a1"
+ subject="An easier approach "
+ date="2016-11-02T21:23:40Z"
+ content="""
+I hadn't really looked at the inner workings of myrepos before.
+
+Well, now that I did, I see the core issue is one level further down: you're actually using \"cvs status\".  Don't :-)
+
+The idiom to get the kind of output \"mr status\" wants is actually
+
+> cvs -nq up
+"""]]

comment
diff --git a/doc/todo/CVS_status_shortened_too_much/comment_1_863c26433522879e811a6ab96f3ad4ab._comment b/doc/todo/CVS_status_shortened_too_much/comment_1_863c26433522879e811a6ab96f3ad4ab._comment
new file mode 100644
index 0000000..0b220ea
--- /dev/null
+++ b/doc/todo/CVS_status_shortened_too_much/comment_1_863c26433522879e811a6ab96f3ad4ab._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2016-11-02T19:02:18Z"
+ content="""
+Patches accepted.
+
+Although given the cvs status output does not include the directory at all,
+except for in some lines output to stderr, which would mean parsing stderr
+and combining it with the filenames in stdout to get actual filenames ...
+It would be quite a complicated patch.
+
+Of course you can also override `cvs_status` in  your own `.mrconfig`
+"""]]

diff --git a/doc/todo/CVS_status_shortened_too_much.mdwn b/doc/todo/CVS_status_shortened_too_much.mdwn
new file mode 100644
index 0000000..d042843
--- /dev/null
+++ b/doc/todo/CVS_status_shortened_too_much.mdwn
@@ -0,0 +1,11 @@
+Yeah, I know, CVS is ancient, and clunky and should no longer be used...  but it is, and myrepos does support it, so here we are.
+
+'mr status' removes all non-directory elements of a locally modified file's name.  As can be seen in
+this little excerpt from a local sandbox here, that's not terribly helpful:
+
+File: Makefile          Status: Locally Modified
+File: Makefile          Status: Locally Modified
+File: Makefile          Status: Locally Modified
+File: Makefile.am       Status: Locally Modified
+
+Aha, so 3 out of 66 files named 'Makefile' are modified. 

Added a comment: fixups commands
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_2_1fe178f2e951f680a23bb52cb90127b5._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_2_1fe178f2e951f680a23bb52cb90127b5._comment
new file mode 100644
index 0000000..e52e0ba
--- /dev/null
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_2_1fe178f2e951f680a23bb52cb90127b5._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="tom@6463e5ce4c0e478cb7583fb37288d6954e17bfc6"
+ nickname="tom"
+ avatar="http://cdn.libravatar.org/avatar/a39876f3fdeb0295ec9258bbb1b37f88"
+ subject="fixups commands"
+ date="2016-10-13T22:37:19Z"
+ content="""
+After thinking about your comment suggesting the simplest way might be to run all fixups at the end, it occurred to me that for some it might be important to keep the fixups where they are. I can't think of a specific example offhand, but might there not be a time that cloning a repository, and executing its fixups, be a prerequisite before cloning another repository? Like I mentioned, I can't think of a specific example right now; however, I'm sure someone can think of something. :-)
+
+A quick fix for the way we're both using the dummy target might be to simply create a reserved 'order' value (e.g \"order = 99\" or \"order = last\") that is is broken out of the repo list and kept until last. I can barely make out what's happening when I try to read perl, but maybe the target containing the reserved 'order' value could be processed immediately after completion of the 'while' loop contained within the 'mrs' subroutine? (I hope that made sense)
+
+Long-term, I see the value of keeping the original intent of 'order' (i.e. make a dependent repository be processed after another). Now that I know what's happening, I've revised my .mrconfig to eliminate the need for the 'final' fixups. If I ever need it again, I can always run with jobs=1.
+
+"""]]

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 bcd5b55..30c93e3 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
@@ -22,6 +22,3 @@ order = 25
 
 Please revise **mr** to respect the **order** setting, even if **jobs** is set to a number greater than **1**.
 
------------------------------------
-
-# NOTE: I am not able to view your comment on this page using the site https://myrepos.branchable.com--I just happened to notice a new commit at https://github.com/joeyh/myrepos/commits/master. I wasn't able to add another comment here, either (I had to edit my original comment).

fixed
diff --git a/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
index 28e6bef..0b704cb 100644
--- a/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
+++ b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
@@ -1 +1,3 @@
 When a new todo item is created on the myrepos "todo" list (here on branchable), none of the comments are viewable. I only noticed you commented on my [post](http://myrepos.branchable.com/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/) when I saw a [new commit](https://github.com/joeyh/myrepos/commits/master). I wasn't able to add another comment there, either (I edited my original comment to try to let you know, but I'm guessing you weren't notified). I'm not the only one who has seen this issue--please see the statement in the last line of this [item](http://myrepos.branchable.com/todo/add-all-git-remotes/).
+
+[[done]]
diff --git a/doc/todo/comments_are_not_displayed_on_todo_list_items/comment_1_d4dcfe4a7318ed0461e338eb5074f9b4._comment b/doc/todo/comments_are_not_displayed_on_todo_list_items/comment_1_d4dcfe4a7318ed0461e338eb5074f9b4._comment
new file mode 100644
index 0000000..025c38a
--- /dev/null
+++ b/doc/todo/comments_are_not_displayed_on_todo_list_items/comment_1_d4dcfe4a7318ed0461e338eb5074f9b4._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2016-10-13T16:47:34Z"
+ content="""
+Changed the website config to allow comments on these pages now.
+"""]]

diff --git a/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
new file mode 100644
index 0000000..28e6bef
--- /dev/null
+++ b/doc/todo/comments_are_not_displayed_on_todo_list_items.mdwn
@@ -0,0 +1 @@
+When a new todo item is created on the myrepos "todo" list (here on branchable), none of the comments are viewable. I only noticed you commented on my [post](http://myrepos.branchable.com/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/) when I saw a [new commit](https://github.com/joeyh/myrepos/commits/master). I wasn't able to add another comment there, either (I edited my original comment to try to let you know, but I'm guessing you weren't notified). I'm not the only one who has seen this issue--please see the statement in the last line of this [item](http://myrepos.branchable.com/todo/add-all-git-remotes/).

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 30c93e3..bcd5b55 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
@@ -22,3 +22,6 @@ order = 25
 
 Please revise **mr** to respect the **order** setting, even if **jobs** is set to a number greater than **1**.
 
+-----------------------------------
+
+# NOTE: I am not able to view your comment on this page using the site https://myrepos.branchable.com--I just happened to notice a new commit at https://github.com/joeyh/myrepos/commits/master. I wasn't able to add another comment here, either (I had to edit my original comment).

comment
diff --git a/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
new file mode 100644
index 0000000..1ab2b02
--- /dev/null
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1/comment_1_b25c104467d054d42ea1a25fec79930f._comment
@@ -0,0 +1,33 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2016-10-01T23:04:02Z"
+ content="""
+`order` is still honored with --jobs, in that the repos are processed in
+order. It's just that the concurrent processing doesn't guarantee a low
+order repository will be done being processed by the time a higher order
+repository starts being processed (or even finishes).
+
+It would of course be possible to stall the concurrent processing to
+guarantee that.
+
+I think there are probably two ways `order` might be used:
+
+1. To make a dependant repository be processed after another one. I use it
+   this way myself. Broken by --jobs.
+2. To eg, sort more expensive or less important repositories later. For
+   example, I used to keep a clone of the linux git repo, but it's very
+   large and so I'd rather it not be processed until most everything else is
+   done, especially if running with --jobs 1 in a low bandwidth setting --
+   but if I used --jobs 2, I'd not care if the second to last repo and the
+   linux repo updated concurrently.
+
+These are both valid; might be better to keep order as it is to handle #2,
+and add a more formal dependency mechanism for #1. 
+
+The use of a dummy target to run a `fixups` at the end of the update, which
+is what we're both using `order` for suggests a simpler approach: Just make
+fixups commands be run after all repositories are updated, instead of the
+current behavior of running them when the repository that defines them is
+updated.
+"""]]

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 bcc6bcd..30c93e3 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
@@ -13,7 +13,7 @@ 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**  
 >  
-> This was easily resolved by adding `update = :` to the [tmp] section.
+> This was easily resolved by adding `update = :` to the [tmp] section. [git repository containing proposed change](https://github.com/tomhoover/myrepos/tree/dummy-target).
 
 2. I now discovered that the [tmp] target was not being executed after all other targets (as the `order = 25` should have required). NOTE: none of my other targets have an **order** setting of greater than **15**.
 > I normally have `jobs = 5` set in my .mrconfig file--changing this to `jobs = 1` resulted in the desired behavior.  

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
new file mode 100644
index 0000000..bcc6bcd
--- /dev/null
+++ b/doc/todo/config___39__order__39___is_ignored_when___39__jobs__39_____62__1.mdwn
@@ -0,0 +1,24 @@
+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
+```
+
+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**  
+>  
+> This was easily resolved by adding `update = :` to the [tmp] section.
+
+2. I now discovered that the [tmp] target was not being executed after all other targets (as the `order = 25` should have required). NOTE: none of my other targets have an **order** setting of greater than **15**.
+> I normally have `jobs = 5` set in my .mrconfig file--changing this to `jobs = 1` resulted in the desired behavior.  
+
+**Enhancement Request:**
+
+Please revise **mr** to respect the **order** setting, even if **jobs** is set to a number greater than **1**.
+

Update version to address the review
diff --git a/doc/todo/add-all-git-remotes.mdwn b/doc/todo/add-all-git-remotes.mdwn
index 3a5efed..1a8eafc 100644
--- a/doc/todo/add-all-git-remotes.mdwn
+++ b/doc/todo/add-all-git-remotes.mdwn
@@ -56,3 +56,61 @@ index ad75aa7..a1a1c21 100755
 -- 
 2.1.4
 ```
+
+Thanks for the friendly review Joey.
+
+Here is the updated version with the comment addressed:
+
+```
+From 693d0c96333581bd83b5e5074b43729b415ae5b1 Mon Sep 17 00:00:00 2001
+From: Daniele Pizzolli <dan@toel.it>
+Date: Sun, 29 May 2016 10:51:05 +0200
+Subject: [PATCH] mr register take care of all git remotes
+
+---
+ mr | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/mr b/mr
+index ad75aa7..c221ca8 100755
+--- a/mr
++++ b/mr
+@@ -2225,12 +2225,32 @@ svn_register =
+        echo "Registering svn url: $url in $MR_CONFIG"
+        mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co '$url' '$MR_REPO'"
+ git_register = 
++       # NOTE: we assume the presence of a origin, even that can
++       # not be the case (for example if origin was renamed).
++       # Dealing with such edge use case is too cumbersome.
+        url="`LC_ALL=C git config --get remote.origin.url`" || true
+        if [ -z "$url" ]; then
+                error "cannot determine git url"
+        fi
+        echo "Registering git url: $url in $MR_CONFIG"
+        mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
++       get_remotes() {
++       # NOTE: Since only git >= 2.7.0 supports "remote get-url", we wrangle
++       # with git config and sed
++       LC_ALL=C git config --get-regexp '^remote\..*\.url$' | sed 's:^remote\.\(.*\)\.url \(.*\):\1 \2:' | while read remote url; do
++               if [ "origin" != "${remote}" ]; then
++                        echo "Adding remote ${remote} with git url: $url in $MR_CONFIG" >&2
++                        printf "%s" " && git remote add '$remote' '$url'"
++               fi
++       done
++       }
++       ADDITIONAL_REMOTES="$(get_remotes)"
++       if [ -n "${ADDITIONAL_REMOTES}" ]; then
++               WRAP_REMOTES=" && cd '$MR_REPO'"
++               WRAP_REMOTES="${WRAP_REMOTES}${ADDITIONAL_REMOTES}"
++               WRAP_REMOTES="${WRAP_REMOTES} && git fetch --all"
++               mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'${WRAP_REMOTES}"
++       fi
+ bzr_register =
+        url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}' | head -n 1`"
+        if [ -z "$url" ]; then
+-- 
+2.8.1
+```
+
+PS: I am not able to see (or add) the comments in this page using the site <https://myrepos.branchable.com>,
+instead I have to switch to <http://source.myrepos.branchable.com>.

comment
diff --git a/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment b/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment
new file mode 100644
index 0000000..a30c2cb
--- /dev/null
+++ b/doc/todo/add-all-git-remotes/comment_1_7025247e6ae402b861db7194b6c24698._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2016-05-29T20:02:46Z"
+ content="""
+I like this idea, and it seems fine to change the default `mr register`
+behavior like this.
+
+The TODOs need to be dealt with or removed before I can merge it.
+Git remote names *are* allowed to contain ".", altough they cannot start
+with it.
+"""]]

merge request to support git additional remotes
diff --git a/doc/todo/add-all-git-remotes.mdwn b/doc/todo/add-all-git-remotes.mdwn
new file mode 100644
index 0000000..3a5efed
--- /dev/null
+++ b/doc/todo/add-all-git-remotes.mdwn
@@ -0,0 +1,58 @@
+Apply this patch to add all git remotes with register.
+
+Let me know if there are strict testing or coding standard to
+conform to.
+
+Thanks and Best,
+Daniele
+
+
+```
+From 46971cbb17f4c02a281c18ff9fbbf6976c4a5a91 Mon Sep 17 00:00:00 2001
+From: Daniele Pizzolli <dan@toel.it>
+Date: Sun, 29 May 2016 10:51:05 +0200
+Subject: [PATCH] mr register take care of all git remotes
+
+---
+ mr | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/mr b/mr
+index ad75aa7..a1a1c21 100755
+--- a/mr
++++ b/mr
+@@ -2225,12 +2225,31 @@ svn_register =
+ 	echo "Registering svn url: $url in $MR_CONFIG"
+ 	mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co '$url' '$MR_REPO'"
+ git_register = 
++	# TODO: do not assume origin as the only valid name
+ 	url="`LC_ALL=C git config --get remote.origin.url`" || true
+ 	if [ -z "$url" ]; then
+ 		error "cannot determine git url"
+ 	fi
+ 	echo "Registering git url: $url in $MR_CONFIG"
+ 	mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
++	get_remotes() {
++	LC_ALL=C git config --get-regexp 'remote.*.url' | sed 's:^remote.\([^.]*\).url \(.*\):\1 \2:' | while read remote url; do
++		# TODO: verify the assumption that remotes does not contain .
++		# TODO: verify the assumption that the remote url is correctly escaped
++		if [ "origin" != "${remote}" ]; then
++			 echo "Adding remote ${remote} with git url: $url in $MR_CONFIG" >&2
++			 printf "%s" "&& git remote add '$remote' '$url'"
++		fi
++	done
++	}
++	ADDITIONAL_REMOTES="$(get_remotes)"
++	if [ -n "${ADDITIONAL_REMOTES}" ]; then
++		WRAP_REMOTES="&& cd '$MR_REPO'"
++		WRAP_REMOTES="${WRAP_REMOTES} ${ADDITIONAL_REMOTES}"
++		WRAP_REMOTES="${WRAP_REMOTES} && git fetch --all"
++		mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO' ${WRAP_REMOTES}"
++	fi
++
+ bzr_register =
+ 	url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}' | head -n 1`"
+ 	if [ -z "$url" ]; then
+-- 
+2.1.4
+```

Added stow library. This lets dotfiles in repositories managed by mr be symlinked into the home directory by GNU stow.
Thanks, Sean Whitton and Adam Spiers.
diff --git a/debian/changelog b/debian/changelog
index 58b013c..68d09cd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,9 @@ myrepos (1.20160123) UNRELEASED; urgency=medium
   * Strip .git extension when registering vsch repositories.
     Thanks, Don March
   * Disable git pager when mr status runs git stash list.
+  * Added stow library. This lets dotfiles in repositories managed by mr
+    be symlinked into the home directory by GNU stow.
+    Thanks, Sean Whitton and Adam Spiers.
 
  -- Joey Hess <id@joeyh.name>  Sat, 02 Apr 2016 15:10:58 -0400
 
diff --git a/doc/todo/merge_request:_stow_library.mdwn b/doc/todo/merge_request:_stow_library.mdwn
index daa7362..89356f1 100644
--- a/doc/todo/merge_request:_stow_library.mdwn
+++ b/doc/todo/merge_request:_stow_library.mdwn
@@ -1,3 +1,5 @@
 Please consider merging branch `stow-lib` of repo `https://git.spwhitton.name/myrepos`.  This branch adds `/usr/share/mr/stow`, a library to use GNU Stow to manage dotfiles stored in repos managed with mr.
 
 This library was originally written by Adam Spiers, but his version required changes to mainline mr which Joey wasn't willing to merge.  I have reworked the library so that it doesn't require any changes to mainline mr.  I have also added some other useful commands and improved the documentation.  I believe it is now suitable to be included in mr.  --[[spwhitton|https://spwhitton.name]]
+
+> [[merged|done]]. Thanks Sean and Adam! --[[Joey]]
diff --git a/lib/stow b/lib/stow
index 5c776a9..85133e1 100644
--- a/lib/stow
+++ b/lib/stow
@@ -1,8 +1,8 @@
 # Plug-in to use GNU Stow to manage symlinks whose targets lie in a
 # repository managed with myrepos
 #
-# The standard use case is for managing dotfiles inside one's home
-# directory.
+# The standard use case is for managing symlinks to dotfiles 
+# inside one's home directory.
 #
 # Original author (2011):
 # Adam Spiers <mr@adamspiers.org>