Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fea128b

Browse files
committed
Merge branch 'feature/disabled-filters-checkout' into libgit-next-1.7.2
2 parents 26b5c8b + 680b5f0 commit fea128b

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

include/git2/checkout.h

+1
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ typedef struct git_checkout_options {
342342

343343
/** Payload passed to perfdata_cb */
344344
void *perfdata_payload;
345+
git_strarray disabled_filters;
345346
} git_checkout_options;
346347

347348
#define GIT_CHECKOUT_OPTIONS_VERSION 1

src/libgit2/checkout.c

+2
Original file line numberDiff line numberDiff line change
@@ -1568,6 +1568,7 @@ static int blob_content_to_file(
15681568

15691569
filter_session.attr_session = &data->attr_session;
15701570
filter_session.temp_buf = &buffers->tmp;
1571+
filter_session.disabled_filters = &data->opts.disabled_filters;
15711572

15721573
if (!data->opts.disable_filters) {
15731574
git_mutex_lock(&data->index_mutex);
@@ -2429,6 +2430,7 @@ static int checkout_write_merge(
24292430

24302431
filter_session.attr_session = &data->attr_session;
24312432
filter_session.temp_buf = &buffers->tmp;
2433+
filter_session.disabled_filters = &data->opts.disabled_filters;
24322434

24332435
if ((error = git_filter_list__load(
24342436
&fl, data->repo, NULL, result.path,

src/libgit2/filter.c

+15
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,8 @@ int git_filter_list__load(
516516
git_filter_session *filter_session)
517517
{
518518
int error = 0;
519+
int i;
520+
int disabled_filter_found;
519521
git_filter_list *fl = NULL;
520522
git_filter_source src = { 0 };
521523
git_filter_entry *fe;
@@ -543,6 +545,19 @@ int git_filter_list__load(
543545
if (!fdef || !fdef->filter)
544546
continue;
545547

548+
if (filter_session->disabled_filters) {
549+
disabled_filter_found = 0;
550+
for (i = 0; i < filter_session->disabled_filters->count; ++i) {
551+
char *filter = filter_session->disabled_filters->strings[i];
552+
if (!strcmp(filter, fdef->filter_name)) {
553+
disabled_filter_found = 1;
554+
break;
555+
}
556+
}
557+
if (disabled_filter_found)
558+
continue;
559+
}
560+
546561
if (fdef->nattrs > 0) {
547562
error = filter_list_check_attributes(
548563
&values, repo,

src/libgit2/filter.h

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ typedef struct {
2020
git_filter_options options;
2121
git_attr_session *attr_session;
2222
git_str *temp_buf;
23+
git_strarray *disabled_filters;
2324
} git_filter_session;
2425

2526
#define GIT_FILTER_SESSION_INIT {GIT_FILTER_OPTIONS_INIT, 0}

0 commit comments

Comments
 (0)