B<mr> [options] record [-m "message"]
+B<mr> [options] fetch
+
B<mr> [options] push
B<mr> [options] diff
The optional -m parameter allows specifying a commit message.
+=item fetch
+
+Fetches from each repository's remote repository, but does not
+update the working copy. Only supported for some distributed version
+control systems.
+
=item push
Pushes committed local changes to the remote repository. A no-op for
=item bootstrap url [directory]
-Causes mr to download the url, and use it as a .mrconfig file
-to checkout the repositories listed in it, into the specified directory.
+Causes mr to download the url, and use it as a .mrconfig file to checkout
+the repositories listed in it, into the specified directory.
+
+To use scp to download, the url may have the form ssh://[user@]host:file
The directory will be created if it does not exist. If no directory is
specified, the current directory will be used.
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
- my @curlargs = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
- push(@curlargs, "-k") if $insecure;
- my $curlstatus = system(@curlargs);
- die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60;
- die "mr bootstrap: download of $url failed\n" if $curlstatus != 0;
+ my @downloader;
+ if ($url =~ m!^ssh://(.*)!) {
+ @downloader = ("scp", $1, $tmpconfig);
+ }
+ else {
+ @downloader = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
+ push(@downloader, "-k") if $insecure;
+ }
+ my $status = system(@downloader);
+ die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n"
+ if $downloader[0] eq 'curl' && $status >> 8 == 60;
+ die "mr bootstrap: download of $url failed\n" if $status != 0;
if (! -e $dir) {
system("mkdir", "-p", $dir);
vcsh_update = vcsh run "$MR_REPO" git pull "$@"
veracity_update = vv pull "$@" && vv update "$@"
+git_fetch = git fetch --all --prune --tags
+git_svn_fetch = git svn fetch
+darcs_fetch = darcs fetch
+hg_fetch = hg pull
+
svn_status = svn status "$@"
-git_status = git status -s "$@" || true
-bzr_status = bzr status --short "$@"
+git_status = git status -s "$@" || true; git --no-pager log --branches --not --remotes --simplify-by-decoration --decorate --oneline || true
+bzr_status = bzr status --short "$@"; bzr missing
cvs_status = cvs status "$@"
-hg_status = hg status "$@"
+hg_status = hg status "$@"; hg summary --quiet | grep -v 'parent: 0:'
darcs_status = darcs whatsnew -ls "$@" || true
fossil_status = fossil changes "$@"
-vcsh_status = cd $(vcsh run "$MR_REPO" git config --get core.worktree); vcsh run "$MR_REPO" git status -s "$@" || true
+vcsh_status = vcsh run "$MR_REPO" git -c status.relativePaths=false status -s "$@" || true
veracity_status = vv status "$@"
svn_commit = svn commit "$@"
vcsh_log = vcsh run "$MR_REPO" git log "$@"
veracity_log = vv log "$@"
+hg_grep = hg grep "$@"
+cvs_grep = ack-grep "$@"
+svn_grep = ack-grep "$@"
+git_svn_grep = git grep "$@"
+git_grep = git grep "$@"
+bzr_grep = ack-grep "$@"
+
run = "$@"
svn_register =