mr - a Multiple Repository management tool
=head1 SYNOPSIS
-/
+
B<mr> [options] checkout
B<mr> [options] update
The optional -m parameter allows specifying a commit message.
+=item push
+
+Pushes committed local changes to the remote repository. A no-op for
+centralized revision control systems.
+
=item diff
Show a diff of uncommitted changes.
sub action { #{{{
my ($action, $dir, $topdir, $subdir) = @_;
-
+
$ENV{MR_CONFIG}=$configfiles{$topdir};
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
if (-e "$ENV{HOME}/.mrlog" && $action ne 'remember') {
# recreate original command line to
# remember, and avoid recursing
- @ARGV=('-n', $action, @ARGV);
+ my @orig=@ARGV;
+ @ARGV=('-n', $action, @orig);
action("remember", $dir, $topdir, $subdir);
+ @ARGV=@orig;
}
}
elsif ($ret != 0) {
if ($parameter eq "include") {
print "mr: including output of \"$value\"\n" if $verbose;
unshift @lines, `$value`;
+ if ($?) {
+ print STDERR "mr: include command exited nonzero ($?)\n";
+ }
next;
}
hg_record = hg commit -m "$@"
darcs_record = darcs record -a -m "$@"
+svn_push = :
+git_push = git push "$@"
+bzr_push = bzr push "$@"
+cvs_push = :
+hg_push = hg push "$@"
+darcs_push = darcs push -a
+
svn_diff = svn diff "$@"
git_diff = git diff "$@"
bzr_diff = bzr diff "$@"
if [ -s ~/.mrlog ]; then
info "running offline commands"
mv -f ~/.mrlog ~/.mrlog.old
- if ! sh ~/.mrlog.old; then
- error "offline commands failed; left in ~/.mrlog.old"
+ if ! sh -e ~/.mrlog.old; then
+ error "offline command failed; left in ~/.mrlog.old"
fi
rm -f ~/.mrlog.old
else
info "no offline commands to run"
fi
offline =
+ umask 077
touch ~/.mrlog
info "offline mode enabled"
remember =