]> git.cworth.org Git - sup/commitdiff
for duplicate messages, merge labels rather than discard them
authorWilliam Morgan <wmorgan-sup@masanjin.net>
Wed, 26 Nov 2008 23:23:35 +0000 (15:23 -0800)
committerWilliam Morgan <wmorgan-sup@masanjin.net>
Wed, 26 Nov 2008 23:23:35 +0000 (15:23 -0800)
bin/sup-sync
lib/sup/poll.rb

index ac5caf6c6b724e2df48db24afb46994e8cfaa683..f9624e86003799a3cb4025e091363b7047974f62 100644 (file)
@@ -163,7 +163,7 @@ begin
       ## assign message labels based on the operation we're performing
       case op
       when :asis
-        m.labels = index_state if index_state
+        m.labels = (m.labels + index_state).uniq if index_state
       when :restore
         ## if the entry exists on disk
         if restored_state[m.id]
index 87cf9963796286f73a92f87478c207e23300cfa0..de25b4ceba2f176915dbcd83b55469b2b107c9d4 100644 (file)
@@ -97,7 +97,7 @@ EOS
         numi = 0
         add_messages_from source do |m, offset, entry|
           ## always preserve the labels on disk.
-          m.labels = entry[:label].split(/\s+/).map { |x| x.intern } if entry
+          m.labels = (m.labels + entry[:label].split(/\s+/).map { |x| x.intern }).uniq if entry
           yield "Found message at #{offset} with labels {#{m.labels * ', '}}"
           unless entry
             num += 1