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