From 49d34c1c0c706eea09380b2165bb3ad4e506dc30 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Thu, 13 Sep 2012 13:17:38 -0700 Subject: [PATCH] Fix problems in diff iterator record chaining There is a bug in building the linked list of line records in the diff iterator and also an off by one element error in the hunk counts. This fixes both of these, adds some test data with more complex sets of hunk and line diffs to exercise this code better. --- src/diff_output.c | 44 ++++++--- tests-clar/diff/tree.c | 82 ++++++++++++++++ tests-clar/diff/workdir.c | 91 ++++++++++++++++++ tests-clar/resources/diff/.gitted/HEAD | 1 + tests-clar/resources/diff/.gitted/config | 6 ++ tests-clar/resources/diff/.gitted/description | 1 + tests-clar/resources/diff/.gitted/index | Bin 0 -> 225 bytes .../resources/diff/.gitted/info/exclude | 6 ++ tests-clar/resources/diff/.gitted/logs/HEAD | 2 + .../diff/.gitted/logs/refs/heads/master | 2 + .../29/ab7053bb4dde0298e03e2c179e890b7dd465a7 | Bin 0 -> 730 bytes .../3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 | Bin 0 -> 1108 bytes .../54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 | Bin 0 -> 1110 bytes .../7a/9e0b02e63179929fed24f0a3e0f19168114d10 | Bin 0 -> 160 bytes .../7b/808f723a8ca90df319682c221187235af76693 | Bin 0 -> 922 bytes .../88/789109439c1e1c3cd45224001edee5304ed53c | 1 + .../cb/8294e696339863df760b2ff5d1e275bee72455 | Bin 0 -> 86 bytes .../d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 | 1 + .../resources/diff/.gitted/refs/heads/master | 1 + tests-clar/resources/diff/another.txt | 38 ++++++++ tests-clar/resources/diff/readme.txt | 36 +++++++ 21 files changed, 299 insertions(+), 13 deletions(-) create mode 100644 tests-clar/resources/diff/.gitted/HEAD create mode 100644 tests-clar/resources/diff/.gitted/config create mode 100644 tests-clar/resources/diff/.gitted/description create mode 100644 tests-clar/resources/diff/.gitted/index create mode 100644 tests-clar/resources/diff/.gitted/info/exclude create mode 100644 tests-clar/resources/diff/.gitted/logs/HEAD create mode 100644 tests-clar/resources/diff/.gitted/logs/refs/heads/master create mode 100644 tests-clar/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 create mode 100644 tests-clar/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 create mode 100644 tests-clar/resources/diff/.gitted/objects/54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 create mode 100644 tests-clar/resources/diff/.gitted/objects/7a/9e0b02e63179929fed24f0a3e0f19168114d10 create mode 100644 tests-clar/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 create mode 100644 tests-clar/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c create mode 100644 tests-clar/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 create mode 100644 tests-clar/resources/diff/.gitted/objects/d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 create mode 100644 tests-clar/resources/diff/.gitted/refs/heads/master create mode 100644 tests-clar/resources/diff/another.txt create mode 100644 tests-clar/resources/diff/readme.txt diff --git a/src/diff_output.c b/src/diff_output.c index ea40c3355..50e3cc1de 100644 --- a/src/diff_output.c +++ b/src/diff_output.c @@ -1204,13 +1204,17 @@ static int diffiter_hunk_cb( if (info->last_hunk) info->last_hunk->next = hunk; info->last_hunk = hunk; + info->last_line = NULL; memcpy(&hunk->range, range, sizeof(hunk->range)); iter->hunk_count++; - if (iter->hunk_head == NULL) - iter->hunk_curr = iter->hunk_head = hunk; + /* adding first hunk to list */ + if (iter->hunk_head == NULL) { + iter->hunk_head = hunk; + iter->hunk_curr = NULL; + } return 0; } @@ -1345,9 +1349,14 @@ int git_diff_iterator_num_hunks_in_file(git_diff_iterator *iter) int git_diff_iterator_num_lines_in_hunk(git_diff_iterator *iter) { int error = diffiter_do_diff_file(iter); - if (!error && iter->hunk_curr) - error = iter->hunk_curr->line_count; - return error; + if (error) + return error; + + if (iter->hunk_curr) + return iter->hunk_curr->line_count; + if (iter->hunk_head) + return iter->hunk_head->line_count; + return 0; } int git_diff_iterator_next_file( @@ -1386,7 +1395,7 @@ int git_diff_iterator_next_file( } if (iter->ctxt.delta == NULL) { - iter->hunk_curr = NULL; + iter->hunk_curr = iter->hunk_head = NULL; iter->line_curr = NULL; } @@ -1409,11 +1418,13 @@ int git_diff_iterator_next_hunk( return error; if (iter->hunk_curr == NULL) { - if (range_ptr) *range_ptr = NULL; - if (header) *header = NULL; - if (header_len) *header_len = 0; - iter->line_curr = NULL; - return GIT_ITEROVER; + if (iter->hunk_head == NULL) + goto no_more_hunks; + iter->hunk_curr = iter->hunk_head; + } else { + if (iter->hunk_curr->next == NULL) + goto no_more_hunks; + iter->hunk_curr = iter->hunk_curr->next; } range = &iter->hunk_curr->range; @@ -1436,9 +1447,16 @@ int git_diff_iterator_next_hunk( } iter->line_curr = iter->hunk_curr->line_head; - iter->hunk_curr = iter->hunk_curr->next; return error; + +no_more_hunks: + if (range_ptr) *range_ptr = NULL; + if (header) *header = NULL; + if (header_len) *header_len = 0; + iter->line_curr = NULL; + + return GIT_ITEROVER; } int git_diff_iterator_next_line( @@ -1453,7 +1471,7 @@ int git_diff_iterator_next_line( return error; /* if the user has not called next_hunk yet, call it implicitly (OK?) */ - if (iter->hunk_curr == iter->hunk_head) { + if (iter->hunk_curr == NULL) { error = git_diff_iterator_next_hunk(NULL, NULL, NULL, iter); if (error) return error; diff --git a/tests-clar/diff/tree.c b/tests-clar/diff/tree.c index 3003374a5..f5e72cadc 100644 --- a/tests-clar/diff/tree.c +++ b/tests-clar/diff/tree.c @@ -256,3 +256,85 @@ void test_diff_tree__merge(void) git_diff_list_free(diff1); } + +void test_diff_tree__larger_hunks(void) +{ + const char *a_commit = "d70d245ed97ed2aa596dd1af6536e4bfdb047b69"; + const char *b_commit = "7a9e0b02e63179929fed24f0a3e0f19168114d10"; + git_tree *a, *b; + git_diff_options opts = {0}; + git_diff_list *diff = NULL; + git_diff_iterator *iter = NULL; + git_diff_delta *delta; + diff_expects exp; + int error, num_files = 0; + + g_repo = cl_git_sandbox_init("diff"); + + cl_assert((a = resolve_commit_oid_to_tree(g_repo, a_commit)) != NULL); + cl_assert((b = resolve_commit_oid_to_tree(g_repo, b_commit)) != NULL); + + opts.context_lines = 1; + opts.interhunk_lines = 0; + + memset(&exp, 0, sizeof(exp)); + + cl_git_pass(git_diff_tree_to_tree(g_repo, &opts, a, b, &diff)); + cl_git_pass(git_diff_iterator_new(&iter, diff)); + + /* this should be exact */ + cl_assert(git_diff_iterator_progress(iter) == 0.0f); + + /* You wouldn't actually structure an iterator loop this way, but + * I have here for testing purposes of the return value + */ + while (!(error = git_diff_iterator_next_file(&delta, iter))) { + git_diff_range *range; + const char *header; + size_t header_len; + int actual_hunks = 0, num_hunks; + float expected_progress; + + num_files++; + + expected_progress = (float)num_files / 2.0f; + cl_assert(expected_progress == git_diff_iterator_progress(iter)); + + num_hunks = git_diff_iterator_num_hunks_in_file(iter); + + while (!(error = git_diff_iterator_next_hunk( + &range, &header, &header_len, iter))) + { + int actual_lines = 0; + int num_lines = git_diff_iterator_num_lines_in_hunk(iter); + char origin; + const char *line; + size_t line_len; + + while (!(error = git_diff_iterator_next_line( + &origin, &line, &line_len, iter))) + { + actual_lines++; + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(actual_lines, num_lines); + + actual_hunks++; + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(actual_hunks, num_hunks); + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(2, num_files); + cl_assert(git_diff_iterator_progress(iter) == 1.0f); + + git_diff_iterator_free(iter); + git_diff_list_free(diff); + diff = NULL; + + git_tree_free(a); + git_tree_free(b); +} diff --git a/tests-clar/diff/workdir.c b/tests-clar/diff/workdir.c index eac7eb87d..40a888544 100644 --- a/tests-clar/diff/workdir.c +++ b/tests-clar/diff/workdir.c @@ -670,3 +670,94 @@ void test_diff_workdir__eof_newline_changes(void) * * Expect 13 files, 0 ADD, 4 DEL, 4 MOD, 1 IGN, 4 UNTR */ + + +void test_diff_workdir__larger_hunks(void) +{ + const char *a_commit = "d70d245ed97ed2aa596dd1af6536e4bfdb047b69"; + const char *b_commit = "7a9e0b02e63179929fed24f0a3e0f19168114d10"; + git_tree *a, *b; + git_diff_options opts = {0}; + int i, error; + + g_repo = cl_git_sandbox_init("diff"); + + cl_assert((a = resolve_commit_oid_to_tree(g_repo, a_commit)) != NULL); + cl_assert((b = resolve_commit_oid_to_tree(g_repo, b_commit)) != NULL); + + opts.context_lines = 1; + opts.interhunk_lines = 0; + + for (i = 0; i <= 2; ++i) { + git_diff_list *diff = NULL; + git_diff_iterator *iter = NULL; + git_diff_delta *delta; + int num_files = 0; + + /* okay, this is a bit silly, but oh well */ + switch (i) { + case 0: + cl_git_pass(git_diff_workdir_to_index(g_repo, &opts, &diff)); + break; + case 1: + cl_git_pass(git_diff_workdir_to_tree(g_repo, &opts, a, &diff)); + break; + case 2: + cl_git_pass(git_diff_workdir_to_tree(g_repo, &opts, b, &diff)); + break; + } + + cl_git_pass(git_diff_iterator_new(&iter, diff)); + + cl_assert(git_diff_iterator_progress(iter) == 0.0f); + + while (!(error = git_diff_iterator_next_file(&delta, iter))) { + git_diff_range *range; + const char *header; + size_t header_len; + int actual_hunks = 0, num_hunks; + float expected_progress; + + num_files++; + + expected_progress = (float)num_files / 2.0f; + cl_assert(expected_progress == git_diff_iterator_progress(iter)); + + num_hunks = git_diff_iterator_num_hunks_in_file(iter); + + while (!(error = git_diff_iterator_next_hunk( + &range, &header, &header_len, iter))) + { + int actual_lines = 0; + int num_lines = git_diff_iterator_num_lines_in_hunk(iter); + char origin; + const char *line; + size_t line_len; + + while (!(error = git_diff_iterator_next_line( + &origin, &line, &line_len, iter))) + { + actual_lines++; + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(actual_lines, num_lines); + + actual_hunks++; + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(actual_hunks, num_hunks); + } + + cl_assert_equal_i(GIT_ITEROVER, error); + cl_assert_equal_i(2, num_files); + cl_assert(git_diff_iterator_progress(iter) == 1.0f); + + git_diff_iterator_free(iter); + git_diff_list_free(diff); + } + + git_tree_free(a); + git_tree_free(b); +} diff --git a/tests-clar/resources/diff/.gitted/HEAD b/tests-clar/resources/diff/.gitted/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/tests-clar/resources/diff/.gitted/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/tests-clar/resources/diff/.gitted/config b/tests-clar/resources/diff/.gitted/config new file mode 100644 index 000000000..77a27ef1d --- /dev/null +++ b/tests-clar/resources/diff/.gitted/config @@ -0,0 +1,6 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = false diff --git a/tests-clar/resources/diff/.gitted/description b/tests-clar/resources/diff/.gitted/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/tests-clar/resources/diff/.gitted/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/tests-clar/resources/diff/.gitted/index b/tests-clar/resources/diff/.gitted/index new file mode 100644 index 0000000000000000000000000000000000000000..e1071874e268731d83cb6c8d98c0eeb17d1019f8 GIT binary patch literal 225 zcmZ?q402{*U|<5_fFR|mK$-zY^D!{6FuLfTWMF7q!oa}z6(}Xbz`&6cl2aTnws?#0 z^cMCQ9p2SiC-+NsGH@s6<(Fin7U`8#lz5}$28-C zosRgtPVU+(smmF-ic%9(a#N9vV+aXybp;wI$zY^lz|~PPk<)pOoQ%yCpe=Iuo*MXF bwORhx;$F$KQ|EaCrZ0Y!VBQ#TE 1347559804 -0700 commit (initial): initial commit +d70d245ed97ed2aa596dd1af6536e4bfdb047b69 7a9e0b02e63179929fed24f0a3e0f19168114d10 Russell Belfer 1347560491 -0700 commit: some changes diff --git a/tests-clar/resources/diff/.gitted/logs/refs/heads/master b/tests-clar/resources/diff/.gitted/logs/refs/heads/master new file mode 100644 index 000000000..8c6f6fd18 --- /dev/null +++ b/tests-clar/resources/diff/.gitted/logs/refs/heads/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 d70d245ed97ed2aa596dd1af6536e4bfdb047b69 Russell Belfer 1347559804 -0700 commit (initial): initial commit +d70d245ed97ed2aa596dd1af6536e4bfdb047b69 7a9e0b02e63179929fed24f0a3e0f19168114d10 Russell Belfer 1347560491 -0700 commit: some changes diff --git a/tests-clar/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 b/tests-clar/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 new file mode 100644 index 0000000000000000000000000000000000000000..94f9a676defa4c774ba2a2ff227c2e3c7f668ae2 GIT binary patch literal 730 zcmV<00ww);0ZmlPlG8v8#WywNi0pFEt#ImzXU-_h zI#D`sM#15H$SY|XCDYftPmL}G00Nlc_l(-isT)H&(xkn_ebaa^fa}G`F(q}nWIl?~ zstXmRk}?G+lfQM|H{C%vt-T+ca?6 z?5<9Da~CCa(R_jt@NdveMXWpsHK@rP8=K%e2Bogjt9oADaR2h_5cmEXf{pff91fV& zp6=X2p(K~bQ8+@i+E4G(141`h8i(_t!(G!lShvW8rzmESXO~bgrIx!>9R|P(eoDEB zB#+Rv^Uu`ODaqDo3lprVCGh9I>roK3>O;SI02&$T4XMr)!rlg()wo5X-u;{<2cKnnccL)3X*Y<d0NE z(;Nf(m`>uWgB`H{?vbrlWU?K#+tW~eXhJ$`JVTf7(t;pN3fMjjL+G&i+slx%=37KR z$-cf&c#V7=ya7%-1PM4;?mj>_5@Kt;2j1Pt$zK%r2wZ_)XH%D2GWcN@_c4-{qHs=4 MDEp`X0Iq4%(`Pbl!2kdN literal 0 HcmV?d00001 diff --git a/tests-clar/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 b/tests-clar/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 new file mode 100644 index 0000000000000000000000000000000000000000..9fed523dc6c22b4dcdb19e208f63df5e4ee8d9da GIT binary patch literal 1108 zcmV-a1graa0d-YNZ`?Kz?wP-0ZoVkn2N0mw)Ic9V>K5H1IghAWi8VzEB(=)s*Y_Jz zvNtIT7_cpg^Y~uueeCIn@87=t<`-AUWx8-KC;I5hM0nCs5KjI^>^;Rr5*HUkCQd^5 z?-J821Nmt2{?^gxt}cuQm6)b=6v~U>Jr7q7h4Ft3WF?fu-hIZ4e9J}VOl9Ii7KIDG zL$`^qLM0j-=XnjzauM2eB&ICsDv5HOWt$|)$rzn{<4pbPe8Dl=VtUqAWfFSt!upAx zB?a*v&B6f_wuU%1;n>83_L9p*Y;jkq{lnmeJSWVYWQp08n4AEf6lWUvhVpV!gcP$a zxl$yM3-s8TB*SW36D*8jCqajJp|pnLW)$I^qjgwnXj@Hg#42yRpt5;p)o&p_#p zR(xllXriHj=zPfUb39AkZz!dQ6$q4!$ZMT#ZJ1Qd}0eboak3<4e{!86;_kB@o@uG zN9#dCoLyiDwYq^J$$5dsPNb-!*1ULB(S{G&(UpgabvEpC1e(^b18j%)DpTEgS@T3N zd5eNF#dQQ|5lwfM)emoRh2>U1P>97~(V*JL+qWWhFLs0K<7PPzKWG#nfMv-9h0RU0~XnM_(uD6rQ`2 zXu2!(Ys0>}zdPa#?op?fE#lVz`)m7|$KZ+zL~jUihRG`fUE6F8_>$Zph#=rKxOP!s zRnutt163E#2(U)-o}F!3Wo@^!LmQ_>e4XRCa}E<|uHoY$Zb3;qau#ejC>oOT@CGJsXpH>OP_Al5~ z8g;DN>)!MTIyhcy?Ir_sE#Fj1sQ)5e2o-nY!Suj|cb@}^DmI-$dtiPHvIlEb)o#oh zPHJVn)$jtJ9c+WZ_TU0ZRsCUO^A%{j$d(lUf!a^>ceRuEYsQ5Q=<20`Ytq>|PrLiL a=q@$DGzWGJDegG}{ni@!2Aa#pgkvy-cJ&83%3M6&P<=1zX zlyO4Cs!uIla7LL@;74dDK3(@xEL~V z62gC%m}VKsM~nBjjz)KNVKk`3fu?m7%8TFw9jOl zDQR1BrAQzb=&>_NhSjzv0E}TLL5Fyuw1(nl6ycnsbpSOqRFfM4<&76KH=e_|f~$O@ zb7Lh6*opRbyy_ka=~=nj_&QJ zGv-#}EhgK*C@3zpE{dj}^%3*yK*yMUa&JpJAZs?$7&Vt0SeUj5!;&CPA*99 zYN5Z@{`N}dO;?5mFAfK=vwA@JJZiQ@Xv{5w_;8%8TWI(poXg!Z0~j zg6(6o;PWZMeAS?3g4Xe)5c*0DD5eZUb8@i)Q8B!Eb!qi%h)4(?OfztxpTGP4mv7-# zwBFnRnZWo#t*5*8|y#h^d>HY+t^Fgd&v)cAO#jOrjxozQ~isIM`R zb+M@f8P1D=GGOKx&-|zCP72p#z^09P^mUR>>A5?Jrn^F6_pCsGsib%xn%$8Wa1X^~ z$`ys-8zyr_y=t_hDhN{eZa-=dYo(ux^w>1=-Dr1PmJK@#9$${aJ4Wi(EXcDN0|7Ixd~VrJ8H_c!*n2RUJ7Cxj0B03WY%t zGYpaJB*p+EsAfHc4d6Sj6TQs_eAU?2*W4ql$xet$qz>$x)o{vo2JeY`l-Z|Mg<(A} z^j1=ItlH~7mB0ofNo(yXfZetLR^m|q#anO^?!-fi0~g+d2uxHr=oH!m^J9>m{VMxC zIcj=p*66K<7x?VhAr#ggT%h@C5Fj>Rk+!>FN%0@p@kD=Dzk9!CT-czlDht=7vvrL#>HAb?rXwk(MCT9#GYGDy)k%XNs>YJKu9XKExa>6kPo0MGi%sP$USud1F z&PXBqsM68r+TeZcyDSU5WErKwz2)ch>GP3qrLGUqmV)z0QNtAjqB`mM*H87|QtfpW OD0A8-+0_qJbw!$C0Z#n@ literal 0 HcmV?d00001 diff --git a/tests-clar/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 b/tests-clar/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 new file mode 100644 index 0000000000000000000000000000000000000000..2fd266be66d9951a4bb7c6c9dd3b94318a678463 GIT binary patch literal 922 zcmV;L17-Yp0cBN9kJ~m7?U}z~ZrcK011%5~=&{=-y|jlUK+q#4jV)#=jzChYD5w00 z{KEW_yhqvIEqbwGc{qIYK1N-%PJaINmsdZ$A64FjDkt@I$trd9RkHdRH<|pS7QvsT z`ZS22eMVunNs{`E0)5iFiPcfFynFcD*;3I!(I)U*kuLkxk0G69vO(j~Io^flwiaPe zO}#DIpK;G-i&T@*KdDShtYMBS(Rv>*ZBWzD^*%|bPE!q8fg+?qXT?XVVkc4Gk2|KL zaJnAT)L`i#ljbw99NNu*qkN1bu8vl4S4g-59R|!5ZJyY$HV%sRmWBfS??;R_sZSR$ zL`^`00UVkaw0YFuoO_)^&;C(Mkq1jvKUI0RhT8Zz$^&7k_{(q{y^>5&h<0I6e~{j$ ziF~<}u2RFKWY1WMPVDw54 zxq^%p>|*M-7WMvjU(o%5LXxSY{6(pr2cUC&T>Vx6JXIgS5$4~35&xWx`k9-v4NGH& zI_%zQvT}y~*46SO?!|N`%Tl#G!z#3#kFHEG5nN}Kj8%i*NC&@o9GG8U9KFN-fQKj8 z?nZn9r5DQf4$U`wdW`}A-DP!bM+d_y#hOd0cTqo4T8#Hn5qcVM>IjF{RW&gW(}ADK zHOql*8g##!^05T`TyH%qa?^Mib`Ag|BZ?t4gJQ5hLYb}j4)OT&CS0@lZMbJq?1i}K zcWBuTpDFEKao``qa5`EEgYMb*xRi<%ARx^G_u@MYW~mh-Qmp*;vc!@7u8g-AC0L;aTytcHZ=Ui4e*~M-~{Td zY_*FCyP-Af_?ue>JE39&(cp-mVpKJ*FZ^Vv=_)3=2q{CvX{x-DCf_mffPE2Rj(|4W z+IG~%9f}+S;7zC(*%ZrehY!A+9*y07Q*jaVV2dQ6_#O*ojsa8_o7$k*Sv#nUDrGBG zC#;!nU*%0|7t)i(CrHQLx4^xVq3sY(r_f_lH>{eo<$I(%>9M_0_P0m708e{l1%0rL whX832f`X}#7U1qjpZEr#4S*HhoBi4n)(m{G+chcRBI4zfT&PF)9c<)o4UJ^Y_5c6? literal 0 HcmV?d00001 diff --git a/tests-clar/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c b/tests-clar/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c new file mode 100644 index 000000000..7598b5914 --- /dev/null +++ b/tests-clar/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c @@ -0,0 +1 @@ +x+)JMU07g040031QHÌË/ÉH-Ò+©(aÉ)Ž[¼Åwz {Œïj­“û%;¡ÊŠRSrSÁª4Wïö½Ç4ãŽø¼NîÚ+©Ë¶a \ No newline at end of file diff --git a/tests-clar/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 b/tests-clar/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 new file mode 100644 index 0000000000000000000000000000000000000000..86ebe04fed9f553f544550a852412fde027e28cf GIT binary patch literal 86 zcmV-c0IC0Y0V^p=O;s>AXD~D{Ff%bxNX*MG$w)2IE2$`9u!}yuRx9J_o`j{=%^mNS sT1i#yaEB@@N=;13O$Do}Zs;$v>RHMASu#UMNw8fx>U-K`01