Gnus development mailing list
 help / color / mirror / Atom feed
From: soyeomul@doraji.xyz (황병희)
To: The Gnus <ding@gnus.org>
Subject: Re: gnus-cloud.el
Date: Sun, 29 Mar 2020 07:45:02 +0900	[thread overview]
Message-ID: <yw872mddo7.fsf@vtyjk.birch.chromebook> (raw)
In-Reply-To: <m28sjks3bz.fsf@dme.org> (David Edmondson's message of "Sat, 28 Mar 2020 19:10:24 +0000")

Hellow David^^^

David Edmondson <dme@dme.org> writes:

> [......]
> From a3bdd2219855a72e2ee90de1b6f823c9678a470c Mon Sep 17 00:00:00 2001
> From: David Edmondson <dme@dme.org>
> Date: Sat, 28 Mar 2020 19:03:58 +0000
> Subject: [PATCH] gnus-cloud: Improve cloud sync
>
> After replaying a set of actions downloaded by gnus-cloud, persist the
> highest sequence number seen as the local `gnus-cloud-sequence'
> number, in order that a future download will not unnecessarily replay
> previously seen actions and any future uploads from this emacs
> instance use a higher sequence number than that downloaded.
>
> Remove the test on whether individual newsrc entries are older than
> the current time, as that is always going to be the case.
> ---
>  lisp/gnus/gnus-cloud.el | 54 ++++++++++++++++++++---------------------
>  1 file changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el
> index da6231d73300..7ea691e7220c 100644
> --- a/lisp/gnus/gnus-cloud.el
> +++ b/lisp/gnus/gnus-cloud.el
> @@ -223,13 +223,10 @@ easy interactive way to set this from the Server buffer."
>         (t
>          (gnus-message 1 "Unknown type %s; ignoring" type))))))
>  
> -(defun gnus-cloud-update-newsrc-data (group elem &optional force-older)
> -  "Update the newsrc data for GROUP from ELEM.
> -Use old data if FORCE-OLDER is not nil."
> +(defun gnus-cloud-update-newsrc-data (group elem)
> +  "Update the newsrc data for GROUP from ELEM."
>    (let* ((contents (plist-get elem :contents))
>           (date (or (plist-get elem :timestamp) "0"))
> -         (now (gnus-cloud-timestamp nil))
> -         (newer (string-lessp date now))
>           (group-info (gnus-get-info group)))
>      (if (and contents
>               (stringp (nth 0 contents))
> @@ -238,15 +235,13 @@ Use old data if FORCE-OLDER is not nil."
>              (if (equal (format "%S" group-info)
>                         (format "%S" contents))
>                  (gnus-message 3 "Skipping cloud update of group %s, the info is the same" group)
> -              (if (and newer (not force-older))
> -                (gnus-message 3 "Skipping outdated cloud info for group %s, the info is from %s (now is %s)" group date now)
> -                (when (or (not gnus-cloud-interactive)
> -                          (gnus-y-or-n-p
> -                           (format "%s has older different info in the cloud as of %s, update it here? "
> -				   group date)))
> -		  (gnus-message 2 "Installing cloud update of group %s" group)
> -		  (gnus-set-info group contents)
> -		  (gnus-group-update-group group))))
> +              (when (or (not gnus-cloud-interactive)
> +			(gnus-y-or-n-p
> +			 (format "%s has different info in the cloud from %s, update it here? "
> +				 group date)))
> +		(gnus-message 2 "Installing cloud update of group %s" group)
> +		(gnus-set-info group contents)
> +		(gnus-group-update-group group)))
>            (gnus-error 1 "Sorry, group %s is not subscribed" group))
>        (gnus-error 1 "Sorry, could not update newsrc for group %s (invalid data %S)"
>                    group elem))))
> @@ -380,8 +375,9 @@ When FULL is t, upload everything, not just a difference from the last full."
>                    (gnus-cloud-files-to-upload full)
>                    (gnus-cloud-collect-full-newsrc)))
>            (group (gnus-group-full-name gnus-cloud-group-name gnus-cloud-method)))
> +      (setq gnus-cloud-sequence (1+ (or gnus-cloud-sequence 0)))
>        (insert (format "Subject: (sequence: %s type: %s storage-method: %s)\n"
> -                      (or gnus-cloud-sequence "UNKNOWN")
> +                      gnus-cloud-sequence
>                        (if full :full :partial)
>                        gnus-cloud-storage-method))
>        (insert "From: nobody@gnus.cloud.invalid\n")
> @@ -390,7 +386,6 @@ When FULL is t, upload everything, not just a difference from the last full."
>        (if (gnus-request-accept-article gnus-cloud-group-name gnus-cloud-method
>                                         t t)
>            (progn
> -            (setq gnus-cloud-sequence (1+ (or gnus-cloud-sequence 0)))
>              (gnus-cloud-add-timestamps elems)
>              (gnus-message 3 "Uploaded Gnus Cloud data successfully to %s" group)
>              (gnus-group-refresh-group group))
> @@ -459,18 +454,21 @@ instead of `gnus-cloud-sequence'.
>  When UPDATE is t, returns the result of calling `gnus-cloud-update-all'.
>  Otherwise, returns the Gnus Cloud data chunks."
>    (let ((articles nil)
> +	(highest-sequence-seen gnus-cloud-sequence)
>          chunks)
>      (dolist (header (gnus-cloud-available-chunks))
> -      (when (> (gnus-cloud-chunk-sequence (mail-header-subject header))
> -               (or sequence-override gnus-cloud-sequence -1))
> -
> -        (if (string-match (format "storage-method: %s" gnus-cloud-storage-method)
> -                          (mail-header-subject header))
> -            (push (mail-header-number header) articles)
> -          (gnus-message 1 "Skipping article %s because it didn't match the Gnus Cloud method %s: %s"
> -                        (mail-header-number header)
> -                        gnus-cloud-storage-method
> -                        (mail-header-subject header)))))
> +      (let ((this-sequence (gnus-cloud-chunk-sequence (mail-header-subject header))))
> +	(when (> this-sequence (or sequence-override gnus-cloud-sequence -1))
> +
> +	  (if (string-match (format "storage-method: %s" gnus-cloud-storage-method)
> +			    (mail-header-subject header))
> +	      (progn
> +		(push (mail-header-number header) articles)
> +		(setq highest-sequence-seen (max highest-sequence-seen this-sequence)))
> +	    (gnus-message 1 "Skipping article %s because it didn't match the Gnus Cloud method %s: %s"
> +			  (mail-header-number header)
> +			  gnus-cloud-storage-method
> +			  (mail-header-subject header))))))
>      (when articles
>        (nnimap-request-articles (nreverse articles) gnus-cloud-group-name)
>        (with-current-buffer nntp-server-buffer
> @@ -480,7 +478,9 @@ Otherwise, returns the Gnus Cloud data chunks."
>            (push (gnus-cloud-parse-chunk) chunks)
>            (forward-line 1))))
>      (if update
> -        (mapcar #'gnus-cloud-update-all chunks)
> +        (progn
> +	  (mapcar #'gnus-cloud-update-all chunks)
> +	  (setq gnus-cloud-sequence highest-sequence-seen))
>        chunks)))
>  
>  (defun gnus-cloud-server-p (server)

Sorry man i don't know emacs lisp at all.
By the way the your codes are looks beautiful^^^

Sincerely, Gnus fan Byung-Hee

-- 
^고맙습니다 _白衣從軍_ 감사합니다_^))//


  reply	other threads:[~2020-03-28 22:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-28 15:44 gnus-cloud.el David Edmondson
2020-03-28 17:19 ` gnus-cloud.el Eric Abrahamsen
2020-03-28 19:10   ` gnus-cloud.el David Edmondson
2020-03-28 22:45     ` 황병희 [this message]
2020-03-28 23:08     ` gnus-cloud.el Eric Abrahamsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yw872mddo7.fsf@vtyjk.birch.chromebook \
    --to=soyeomul@doraji.xyz \
    --cc=ding@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).