X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/ffb40f2f354954634cdd554071e60ef3650b3010..7ab60736009c2230a5c7a7b1e8b1081de5e93df0:/mr?ds=sidebyside diff --git a/mr b/mr index 87acef3..7319f98 100755 --- a/mr +++ b/mr @@ -12,6 +12,8 @@ B [options] update B [options] status +B [options] clean [-f] + B [options] commit [-m "message"] B [options] record [-m "message"] @@ -80,6 +82,12 @@ Displays a status report for each repository, showing what uncommitted changes are present in the repository. For distributed version control systems, also shows unpushed local branches. +=item clean + +Print ignored files, untracked files and other cruft in the working directory. + +The optional -f parameter allows removing the files as well as printing them. + =item commit (or ci) Commits changes to each repository. (By default, changes are pushed to the @@ -586,7 +594,7 @@ my $no_chdir=0; my $jobs=1; my $trust_all=0; my $directory=getcwd(); -my $terminal=-t STDOUT && eval{require IO::Pty::Easy;IO::Pty::Easy->import();1;} eq 1; +my $terminal=-t STDOUT && eval{require IO::Pty::Easy;IO::Pty::Easy->import();1;}; my $HOME_MR_CONFIG = "$ENV{HOME}/.mrconfig"; $ENV{MR_CONFIG}=find_mrconfig(); @@ -853,7 +861,7 @@ sub action { } print "$actionmsg\n" unless $quiet || $minimal; - my $hookret=hook("pre_$action", $topdir, $subdir); + my ($hookret, $hook_out)=hook("pre_$action", $topdir, $subdir); return $hookret if $hookret != OK; my ($ret, $out)=runsh $action, $topdir, $subdir, @@ -908,7 +916,7 @@ sub action { return FAILED; } } - my $ret=hook("fixups", $topdir, $subdir); + my ($ret, $hook_out)=hook("fixups", $topdir, $subdir); return $ret if $ret != OK; } @@ -2012,6 +2020,64 @@ git_svn_fetch = git svn fetch darcs_fetch = darcs fetch hg_fetch = hg pull +svn_clean = + if [ "x$1" = x-f ] ; then + shift + svn-clean "$@" + else + svn-clean --print "$@" + fi +git_clean = + if [ "x$1" = x-f ] ; then + shift + git clean -dx --force "$@" + else + git clean -dx --dry-run "$@" + fi +git_svn_clean = + if [ "x$1" = x-f ] ; then + shift + git clean -dx --force "$@" + else + git clean -dx --dry-run "$@" + fi +bzr_clean = + if [ "x$1" = x-f ] ; then + shift + bzr clean-tree --verbose --force --ignored --unknown --detritus "$@" + else + bzr clean-tree --verbose --dry-run --ignored --unknown --detritus "$@" + fi +cvs_clean = + if [ "x$1" = x-f ] ; then + shift + cvs-clean "$@" + else + cvs-clean --dry-run "$@" + fi +hg_clean = + if [ "x$1" = x-f ] ; then + shift + hg purge --print --all "$@" + hg purge --all "$@" + else + hg purge --print --all "$@" + fi +fossil_clean = + if [ "x$1" = x-f ] ; then + shift + fossil clean --dry-run --dotfiles --emptydirs "$@" + else + fossil clean --force --dotfiles --emptydirs "$@" + fi +vcsh_commit = + if [ "x$1" = x-f ] ; then + shift + vcsh run "$MR_REPO" git clean -dx "$@" + else + vcsh run "$MR_REPO" git clean -dx --dry-run "$@" + fi + svn_status = svn status "$@" 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 @@ -2087,6 +2153,7 @@ svn_grep = ack-grep "$@" git_svn_grep = git grep "$@" git_grep = git grep "$@" bzr_grep = ack-grep "$@" +darcs_grep = ack-grep "$@" run = "$@"