2 * Copyright (C) 2021, Google LLC.
3 * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
6 #include "git-compat-util.h"
11 void diffcore_rotate(struct diff_options
*opt
)
13 struct diff_queue_struct
*q
= &diff_queued_diff
;
14 struct diff_queue_struct outq
= DIFF_QUEUE_INIT
;
20 for (i
= 0; i
< q
->nr
; i
++) {
21 int cmp
= strcmp(opt
->rotate_to
, q
->queue
[i
]->two
->path
);
23 break; /* exact match */
24 if (!opt
->rotate_to_strict
&& cmp
< 0)
25 break; /* q->queue[i] is now past the target pathname */
29 /* we did not find the specified path */
30 if (opt
->rotate_to_strict
)
31 die(_("No such path '%s' in the diff"), opt
->rotate_to
);
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
]);