On 7 October 2014 02:30, Andy Bradford
<amb-sendok-1415255446.lmkmojimnoldkcbjb...@bradfords.org> wrote:
> fossil sync >/dev/null && fossil update -n | grep '^changes:.*files 
> modified\.' && {
>   fossil update 2>&1 | mail -s 'Fossil update' m...@he.re
> }

Best yet, although you actually want a -q switch on grep so you don't
get that line mailed to you.
  fossil sync >/dev/null && fossil update -n | grep -q
'^changes:.*files modified\.' && {

> Or if you're running from cron,  and cron is correctly figured, the mail
> command is superfluous:

The mail command is because I actually want to send the mail to several people.

But Stephan's concern about the extra work of running update twice led
me to the enclosed patch which adds a -m switch (and fixes a typo in
the help doc).  It's a few more lines of code, but it's really just
formatting.  So you would use this like:
   fossil sync >/dev/null && fossil update -m | mail -s "fossil
update" m...@he.re ot...@the.re

I don't know about the switch name, but otherwise this seems like a
useful and trivial patch. -h|--hush was another possibility that I
actually like better, but some people  think -h always means help.
Just --hush without a short form might be the best choice.

Thanks  ../Dave

: ~/fs/fossil ; ./fossil diff --from trunk --to update-mail
Index: src/update.c
==================================================================
--- src/update.c
+++ src/update.c
@@ -83,22 +83,28 @@
 ** If FILES is omitted, all files in the current checkout are subject
 ** to being updated and the version of the current checkout is changed
 ** to VERSION. Any uncommitted changes are retained and applied to the
 ** new checkout.
 **
+** The -m or --mail-quiet option suppresses status info unless there was
+** some change that took place in the current checkout.  This is useful
+** in a cron script to send mail only when an update is performed, such as:
+**     fossil update -m | mail -E -s "update occurred" a...@ex.com b...@ex.com
+**
 ** The -n or --dry-run option causes this command to do a "dry run".
 ** It prints out what would have happened but does not actually make
 ** any changes to the current checkout or the repository.
 **
 ** The -v or --verbose option prints status information about
-** unchanged files in addition to those file that actually do change.
+** unchanged files in addition to those files that actually do change.
 **
 ** Options:
 **   --case-sensitive <BOOL> override case-sensitive setting
 **   --debug          print debug information on stdout
 **   --latest         acceptable in place of VERSION, update to latest version
 **   --force-missing  force update if missing content after sync
+**   -m|--mail-quiet  quiet unless there are actual changes
 **   -n|--dry-run     If given, display instead of run actions
 **   -v|--verbose     print status information about all files
 **   -W|--width <num> Width of lines (default is to auto-detect). Must be >20
 **                    or 0 (= no limit, resulting in a single line per entry).
 **
@@ -112,10 +118,11 @@
   int dryRunFlag;       /* -n or --dry-run.  Do a dry run */
   int verboseFlag;      /* -v or --verbose.  Output extra information */
   int forceMissingFlag; /* --force-missing.  Continue if missing content */
   int debugFlag;        /* --debug option */
   int setmtimeFlag;     /* --setmtime.  Set mtimes on files */
+  int hideInfoFlag;     /* -m or --mail-quiet. Quiet unless there are
actual changes */
   int nChng;            /* Number of file renames */
   int *aChng;           /* Array of file renames */
   int i;                /* Loop counter */
   int nConflict = 0;    /* Number of merge conflicts */
   int nOverwrite = 0;   /* Number of unmanaged files overwritten */
@@ -144,10 +151,11 @@
   }
   verboseFlag = find_option("verbose","v",0)!=0;
   forceMissingFlag = find_option("force-missing",0,0)!=0;
   debugFlag = find_option("debug",0,0)!=0;
   setmtimeFlag = find_option("setmtime",0,0)!=0;
+  hideInfoFlag = find_option("mail-quiet","m",0)!=0;

   /* We should be done with options.. */
   verify_all_options();

   db_must_be_within_tree();
@@ -514,15 +522,18 @@
     free(zFullPath);
     free(zFullNewPath);
   }
   db_finalize(&q);
   db_finalize(&mtimeXfer);
-  fossil_print("%.79c\n",'-');
   if( nUpdate==0 ){
-    show_common_info(tid, "checkout:", 1, 0);
-    fossil_print("%-13s None. Already up-to-date\n", "changes:");
+    if ( !hideInfoFlag ){
+      fossil_print("%.79c\n",'-');
+      show_common_info(tid, "checkout:", 1, 0);
+      fossil_print("%-13s None. Already up-to-date\n", "changes:");
+    }
   }else{
+    fossil_print("%.79c\n",'-');
     show_common_info(tid, "updated-to:", 1, 0);
     fossil_print("%-13s %d file%s modified.\n", "changes:",
                  nUpdate, nUpdate>1 ? "s" : "");
   }
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to