]>
git.madduck.net Git - code/myrepos.git/blobdiff - mr
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
B<mr> [options] commit [-m "message"]
B<mr> [options] commit [-m "message"]
+B<mr> [options] record [-m "message"]
+
B<mr> [options] diff
B<mr> [options] log
B<mr> [options] diff
B<mr> [options] log
=item commit (or ci)
Commits changes to each repository. (By default, changes are pushed to the
=item commit (or ci)
Commits changes to each repository. (By default, changes are pushed to the
-remote repository too, when using distributed systems like git.)
+remote repository too, when using distributed systems like git. If you
+don't like this default, you can change it in your .mrconfig, or use record
+instead.)
+
+The optional -m parameter allows specifying a commit message.
+
+=item record
+
+Records changes to the local repository, but does not push them to the
+remote repository. Only supported for distributed revision control systems.
The optional -m parameter allows specifying a commit message.
The optional -m parameter allows specifying a commit message.
=item -s
Expand the statistics line displayed at the end to include information
about exactly which repositories failed and were skipped, if any.
=item -s
Expand the statistics line displayed at the end to include information
about exactly which repositories failed and were skipped, if any.
+=item -i
+
+Interactive mode. If a repository fails to be processed, a subshell will be
+started which you can use to resolve or investigate the problem. Exit the
+subshell to continue the mr run.
+
=item -n [number]
If no number if specified, just operate on the repository for the current
=item -n [number]
If no number if specified, just operate on the repository for the current
# configurables
my $config_overridden=0;
my $verbose=0;
# configurables
my $config_overridden=0;
my $verbose=0;
my $max_depth;
my $no_chdir=0;
my $jobs=1;
my $max_depth;
my $no_chdir=0;
my $jobs=1;
}
else {
if (! $no_chdir) {
}
else {
if (! $no_chdir) {
- print "mr $action: $topdir$subdir\n";
+ print "mr $action: $topdir$subdir\n" unless $quiet ;
}
else {
my $s=$directory;
$s=~s/^\Q$topdir$subdir\E\/?//;
}
else {
my $s=$directory;
$s=~s/^\Q$topdir$subdir\E\/?//;
- print "mr $action: $topdir$subdir (in subdir $s)\n";
+ print "mr $action: $topdir$subdir (in subdir $s)\n" unless $quiet ;
}
$command="set -e; ".$lib.
"my_action(){ $command\n }; my_action ".
}
$command="set -e; ".$lib.
"my_action(){ $command\n }; my_action ".
print "\n";
}
elsif ($ret == FAILED) {
print "\n";
}
elsif ($ret == FAILED) {
+ if ($interactive) {
+ chdir($dir) unless $no_chdir;
+ print STDERR "mr: Starting interactive shell. Exit shell to continue.\n";
+ system((getpwuid($<))[8]);
+ }
push @failed, $dir;
print "\n";
}
push @failed, $dir;
print "\n";
}
showstat($#ok+1, "ok", "ok"),
showstat($#failed+1, "failed", "failed"),
showstat($#skipped+1, "skipped", "skipped"),
showstat($#ok+1, "ok", "ok"),
showstat($#failed+1, "failed", "failed"),
showstat($#skipped+1, "skipped", "skipped"),
if ($stats) {
if (@skipped) {
if ($stats) {
if (@skipped) {
- print "mr $action: (skipped: ".join(" ", @skipped).")\n";
+ print "mr $action: (skipped: ".join(" ", @skipped).")\n" unless $quiet ;
}
if (@failed) {
print STDERR "mr $action: (failed: ".join(" ", @failed).")\n";
}
if (@failed) {
print STDERR "mr $action: (failed: ".join(" ", @failed).")\n";
"d|directory=s" => sub { $directory=abs_path($_[1]) },
"c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 },
"v|verbose" => \$verbose,
"d|directory=s" => sub { $directory=abs_path($_[1]) },
"c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 },
"v|verbose" => \$verbose,
+ "i|interactive" => \$interactive,
"n|no-recurse:i" => \$max_depth,
"j|jobs:i" => \$jobs,
);
"n|no-recurse:i" => \$max_depth,
"j|jobs:i" => \$jobs,
);
test "`GIT_CONFIG="$MR_REPO"/config git config --get core.bare`" = true
svn_update = svn update "$@"
test "`GIT_CONFIG="$MR_REPO"/config git config --get core.bare`" = true
svn_update = svn update "$@"
-git_update = if [ "$@" ]; then git pull "$@"; else git pull -t origin master; fi
+git_update = git pull "$@"
bzr_update = bzr merge "$@"
cvs_update = cvs update "$@"
hg_update = hg pull "$@" && hg update "$@"
bzr_update = bzr merge "$@"
cvs_update = cvs update "$@"
hg_update = hg pull "$@" && hg update "$@"
bzr_status = bzr status "$@"
cvs_status = cvs status "$@"
hg_status = hg status "$@"
bzr_status = bzr status "$@"
cvs_status = cvs status "$@"
hg_status = hg status "$@"
-darcs_status = darcs whatsnew -ls "$@"
+darcs_status = darcs whatsnew -ls "$@" || true
svn_commit = svn commit "$@"
git_commit = git commit -a "$@" && git push --all
svn_commit = svn commit "$@"
git_commit = git commit -a "$@" && git push --all
hg_commit = hg commit -m "$@" && hg push
darcs_commit = darcs record -a -m "$@" && darcs push -a
hg_commit = hg commit -m "$@" && hg push
darcs_commit = darcs record -a -m "$@" && darcs push -a
+git_record = git commit -a "$@"
+bzr_record = bzr commit "$@"
+hg_record = hg commit -m "$@"
+darcs_record = darcs record -a -m "$@"
+
svn_diff = svn diff "$@"
git_diff = git diff "$@"
bzr_diff = bzr diff "$@"
cvs_diff = cvs diff "$@"
hg_diff = hg diff "$@"
svn_diff = svn diff "$@"
git_diff = git diff "$@"
bzr_diff = bzr diff "$@"
cvs_diff = cvs diff "$@"
hg_diff = hg diff "$@"
-darcs_diff = darcs diff "$@"
+darcs_diff = darcs diff -u "$@"
svn_log = svn log "$@"
git_log = git log "$@"
svn_log = svn log "$@"
git_log = git log "$@"
echo "Registering git url: $url in $MR_CONFIG"
mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
bzr_register =
echo "Registering git url: $url in $MR_CONFIG"
mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
bzr_register =
- url=`cat .bzr/branch/parent`
+ url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}'`"
if [ -z "$url" ]; then
error "cannot determine bzr url"
fi
if [ -z "$url" ]; then
error "cannot determine bzr url"
fi
if [ ! -e "$MR_PATH" ]; then
error "cannot find program path"
fi
if [ ! -e "$MR_PATH" ]; then
error "cannot find program path"
fi
- (pod2man -c mr "$MR_PATH" | man -l -) || error "pod2man or man failed"
+ tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed"
+ trap "rm -f $tmp" exit
+ pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed"
+ man -l "$tmp" || error "man failed"