mirror of
https://git.proxmox.com/git/libgit2
synced 2025-11-03 11:12:27 +00:00
don't convert CRLF to CRCRLF
This commit is contained in:
parent
1098cfaeca
commit
4a15ea869c
13
src/crlf.c
13
src/crlf.c
@ -223,12 +223,17 @@ static int crlf_apply_to_odb(
|
||||
static int convert_line_endings(git_buf *dest, const git_buf *source, const char *ending)
|
||||
{
|
||||
const char *scan = git_buf_cstr(source),
|
||||
*next,
|
||||
*scan_end = git_buf_cstr(source) + git_buf_len(source);
|
||||
*next,
|
||||
*line_end,
|
||||
*scan_end = git_buf_cstr(source) + git_buf_len(source);
|
||||
|
||||
while ((next = memchr(scan, '\n', scan_end - scan)) != NULL) {
|
||||
if (next > scan)
|
||||
git_buf_put(dest, scan, next-scan);
|
||||
if (next > scan) {
|
||||
line_end = *(next - 1) == '\r' ? next - 1 : next;
|
||||
git_buf_put(dest, scan, line_end - scan);
|
||||
scan = next + 1;
|
||||
}
|
||||
|
||||
git_buf_puts(dest, ending);
|
||||
scan = next + 1;
|
||||
}
|
||||
|
||||
@ -10,7 +10,9 @@
|
||||
#define MORE_CRLF_TEXT_RAW "crlf\r\ncrlf\r\nlf\ncrlf\r\ncrlf\r\n"
|
||||
#define MORE_LF_TEXT_RAW "lf\nlf\ncrlf\r\nlf\nlf\n"
|
||||
|
||||
#define ALL_LF_TEXT_AS_CRLF "lf\r\nlf\r\nlf\r\nlf\r\nlf\r\n"
|
||||
#define ALL_LF_TEXT_AS_CRLF "lf\r\nlf\r\nlf\r\nlf\r\nlf\r\n"
|
||||
#define MORE_CRLF_TEXT_AS_CRLF "crlf\r\ncrlf\r\nlf\r\ncrlf\r\ncrlf\r\n"
|
||||
#define MORE_LF_TEXT_AS_CRLF "lf\r\nlf\r\ncrlf\r\nlf\r\nlf\r\n"
|
||||
|
||||
static git_repository *g_repo;
|
||||
|
||||
@ -78,6 +80,48 @@ void test_checkout_crlf__detect_crlf_autocrlf_true(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_checkout_crlf__more_lf_autocrlf_true(void)
|
||||
{
|
||||
#ifdef GIT_WIN32
|
||||
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
|
||||
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
|
||||
|
||||
cl_repo_set_bool(g_repo, "core.autocrlf", true);
|
||||
|
||||
git_checkout_head(g_repo, &opts);
|
||||
|
||||
test_file_contents("./crlf/more-lf", MORE_LF_TEXT_AS_CRLF);
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_checkout_crlf__more_crlf_autocrlf_true(void)
|
||||
{
|
||||
#ifdef GIT_WIN32
|
||||
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
|
||||
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
|
||||
|
||||
cl_repo_set_bool(g_repo, "core.autocrlf", true);
|
||||
|
||||
git_checkout_head(g_repo, &opts);
|
||||
|
||||
test_file_contents("./crlf/more-crlf", MORE_CRLF_TEXT_AS_CRLF);
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_checkout_crlf__all_crlf_autocrlf_true(void)
|
||||
{
|
||||
#ifdef GIT_WIN32
|
||||
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
|
||||
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
|
||||
|
||||
cl_repo_set_bool(g_repo, "core.autocrlf", true);
|
||||
|
||||
git_checkout_head(g_repo, &opts);
|
||||
|
||||
test_file_contents("./crlf/all-crlf", ALL_CRLF_TEXT_RAW);
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_checkout_crlf__autocrlf_true_index_size_is_filtered_size(void)
|
||||
{
|
||||
#ifdef GIT_WIN32
|
||||
|
||||
Loading…
Reference in New Issue
Block a user