Index: src/wp-includes/post.php
===================================================================
--- src/wp-includes/post.php	(revision 31269)
+++ src/wp-includes/post.php	(working copy)
@@ -3960,18 +3960,20 @@
 	 */
 	do_action( "{$old_status}_to_{$new_status}", $post );
 
-	/**
-	 * Fires when a post is transitioned from one status to another.
-	 *
-	 * The dynamic portions of the hook name, `$new_status` and `$post->post_type`,
-	 * refer to the new post status and post type, respectively.
-	 *
-	 * @since 2.3.0
-	 *
-	 * @param int     $post_id Post ID.
-	 * @param WP_Post $post    Post object.
-	 */
-	do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );
+	if( 'publish' !== $old_status && 'publish' !== $new_status ) {
+		/**
+		 * Fires when a post is transitioned from one status to another.
+		 *
+		 * The dynamic portions of the hook name, `$new_status` and `$post->post_type`,
+		 * refer to the new post status and post type, respectively.
+		 *
+		 * @since 2.3.0
+		 *
+		 * @param int     $post_id Post ID.
+		 * @param WP_Post $post    Post object.
+		 */
+		do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );
+	}
 }
 
 //
