2 * Copyright (C) 2021, Google LLC.
3 * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
5 #include "git-compat-util.h"
10 void diffcore_rotate(struct diff_options
*opt
)
12 struct diff_queue_struct
*q
= &diff_queued_diff
;
13 struct diff_queue_struct outq
;
19 for (i
= 0; i
< q
->nr
; i
++) {
20 int cmp
= strcmp(opt
->rotate_to
, q
->queue
[i
]->two
->path
);
22 break; /* exact match */
23 if (!opt
->rotate_to_strict
&& cmp
< 0)
24 break; /* q->queue[i] is now past the target pathname */
28 /* we did not find the specified path */
29 if (opt
->rotate_to_strict
)
30 die(_("No such path '%s' in the diff"), opt
->rotate_to
);
34 DIFF_QUEUE_CLEAR(&outq
);
37 for (i
= rotate_to
; i
< q
->nr
; i
++)
38 diff_q(&outq
, q
->queue
[i
]);
39 for (i
= 0; i
< rotate_to
; i
++) {
40 if (opt
->skip_instead_of_rotate
)
41 diff_free_filepair(q
->queue
[i
]);
43 diff_q(&outq
, q
->queue
[i
]);