@@ -102,21 +102,28 @@ void setup_unpack_trees_porcelain(struct unpack_trees_options *opts,
102102 opts -> unpack_rejects [i ].strdup_strings = 1 ;
103103}
104104
105- static void add_entry (struct unpack_trees_options * o , struct cache_entry * ce ,
106- unsigned int set , unsigned int clear )
105+ static void do_add_entry (struct unpack_trees_options * o , struct cache_entry * ce ,
106+ unsigned int set , unsigned int clear )
107107{
108- unsigned int size = ce_size (ce );
109- struct cache_entry * new = xmalloc (size );
110-
111108 clear |= CE_HASHED | CE_UNHASHED ;
112109
113110 if (set & CE_REMOVE )
114111 set |= CE_WT_REMOVE ;
115112
113+ ce -> next = NULL ;
114+ ce -> ce_flags = (ce -> ce_flags & ~clear ) | set ;
115+ add_index_entry (& o -> result , ce ,
116+ ADD_CACHE_OK_TO_ADD | ADD_CACHE_OK_TO_REPLACE );
117+ }
118+
119+ static void add_entry (struct unpack_trees_options * o , struct cache_entry * ce ,
120+ unsigned int set , unsigned int clear )
121+ {
122+ unsigned int size = ce_size (ce );
123+ struct cache_entry * new = xmalloc (size );
124+
116125 memcpy (new , ce , size );
117- new -> next = NULL ;
118- new -> ce_flags = (new -> ce_flags & ~clear ) | set ;
119- add_index_entry (& o -> result , new , ADD_CACHE_OK_TO_ADD |ADD_CACHE_OK_TO_REPLACE );
126+ do_add_entry (o , new , set , clear );
120127}
121128
122129/*
@@ -587,7 +594,7 @@ static int unpack_nondirectories(int n, unsigned long mask,
587594
588595 for (i = 0 ; i < n ; i ++ )
589596 if (src [i ] && src [i ] != o -> df_conflict_entry )
590- add_entry (o , src [i ], 0 , 0 );
597+ do_add_entry (o , src [i ], 0 , 0 );
591598 return 0 ;
592599}
593600
@@ -772,7 +779,7 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str
772779 if (unpack_nondirectories (n , mask , dirmask , src , names , info ) < 0 )
773780 return -1 ;
774781
775- if (src [0 ]) {
782+ if (o -> merge && src [0 ]) {
776783 if (ce_stage (src [0 ]))
777784 mark_ce_used_same_name (src [0 ], o );
778785 else
0 commit comments