git

Форк
0
/
diffcore-rotate.c 
47 строк · 1.0 Кб
1
/*
2
 * Copyright (C) 2021, Google LLC.
3
 * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
4
 */
5
#include "git-compat-util.h"
6
#include "gettext.h"
7
#include "diff.h"
8
#include "diffcore.h"
9

10
void diffcore_rotate(struct diff_options *opt)
11
{
12
	struct diff_queue_struct *q = &diff_queued_diff;
13
	struct diff_queue_struct outq;
14
	int rotate_to, i;
15

16
	if (!q->nr)
17
		return;
18

19
	for (i = 0; i < q->nr; i++) {
20
		int cmp = strcmp(opt->rotate_to, q->queue[i]->two->path);
21
		if (!cmp)
22
			break; /* exact match */
23
		if (!opt->rotate_to_strict && cmp < 0)
24
			break; /* q->queue[i] is now past the target pathname */
25
	}
26

27
	if (q->nr <= i) {
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);
31
		return;
32
	}
33

34
	DIFF_QUEUE_CLEAR(&outq);
35
	rotate_to = i;
36

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]);
42
		else
43
			diff_q(&outq, q->queue[i]);
44
	}
45
	free(q->queue);
46
	*q = outq;
47
}
48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.