On Wed, 2016-06-01 at 17:45 +0700, Nguyễn Thái Ngọc Duy wrote:
> Current mark_reachable_objects() only marks objects from index from
> _current_ worktree as reachable instead of all worktrees. Because
> this
> function is used for pruning, there is a chance that objects
> referenced
> by other worktrees may be deleted. Fix that.
>
> Small behavior change in "one worktree" case, the index is read again
> from file. In the current implementation, if the_index is already
> loaded, the index file will not be read from file again. This adds
> some
> more cost to this operation, hopefully insignificant because
> reachability test is usually very expensive already.
>
> Reported-by: Johannes Sixt <[email protected]>
> Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
> ---
> reachable.c | 33 +++++++++++++++++++++++++++++----
> t/t5304-prune.sh | 9 +++++++++
> 2 files changed, 38 insertions(+), 4 deletions(-)
>
> diff --git a/reachable.c b/reachable.c
> index 15dbe60..8f67242 100644
> --- a/reachable.c
> +++ b/reachable.c
> @@ -9,6 +9,7 @@
> #include "cache-tree.h"
> #include "progress.h"
> #include "list-objects.h"
> +#include "worktree.h"
>
> struct connectivity_progress {
> struct progress *progress;
> @@ -155,6 +156,32 @@ int
> add_unseen_recent_objects_to_traversal(struct rev_info *revs,
> FOR_EACH_OBJECT_LOCAL_ONLY);
> }
>
> +static void add_objects_from_worktree(struct rev_info *revs)
> +{
> + struct worktree **worktrees, **p;
> +
> + worktrees = get_worktrees();
> + for (p = worktrees; *p; p++) {
> + struct worktree *wt = *p;
> + struct index_state istate;
> +
> + memset(&istate, 0, sizeof(istate));
Why not just struct index_state istate = {0}; ?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html