diff --git a/go.mod b/go.mod index 984a4443f..7715c7168 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/go-sql-driver/mysql v1.5.0 github.com/gogs/chardet v0.0.0-20150115103509-2404f7772561 github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14 - github.com/gogs/git-module v1.0.2 + github.com/gogs/git-module v1.1.0 github.com/gogs/go-gogs-client v0.0.0-20200128182646-c69cb7680fd4 github.com/gogs/go-libravatar v0.0.0-20191106065024-33a75213d0a0 github.com/gogs/minwinsvc v0.0.0-20170301035411-95be6356811a diff --git a/go.sum b/go.sum index b67795e9d..4165e9afa 100644 --- a/go.sum +++ b/go.sum @@ -110,6 +110,8 @@ github.com/gogs/git-module v1.0.1 h1:Xh/sfk6zKjF3y9w2G/dN0YMfLjMhRQzqxMTUPHOL5n4 github.com/gogs/git-module v1.0.1/go.mod h1:oN37FFStFjdnTJXsSbhIHKJXh2YeDsEcXPATVz/oeuQ= github.com/gogs/git-module v1.0.2 h1:YrDZV4g489A4sOF3+gQq85UnVBjLn30+w3PF5PBoGpQ= github.com/gogs/git-module v1.0.2/go.mod h1:oN37FFStFjdnTJXsSbhIHKJXh2YeDsEcXPATVz/oeuQ= +github.com/gogs/git-module v1.1.0 h1:OEQAWvhZ4TCsq6Vw/ftyA37Os1QkiPu1uMQpF6ErzG0= +github.com/gogs/git-module v1.1.0/go.mod h1:oN37FFStFjdnTJXsSbhIHKJXh2YeDsEcXPATVz/oeuQ= github.com/gogs/go-gogs-client v0.0.0-20200128182646-c69cb7680fd4 h1:C7NryI/RQhsIWwC2bHN601P1wJKeuQ6U/UCOYTn3Cic= github.com/gogs/go-gogs-client v0.0.0-20200128182646-c69cb7680fd4/go.mod h1:fR6z1Ie6rtF7kl/vBYMfgD5/G5B1blui7z426/sj2DU= github.com/gogs/go-libravatar v0.0.0-20191106065024-33a75213d0a0 h1:K02vod+sn3M1OOkdqi2tPxN2+xESK4qyITVQ3JkGEv4= diff --git a/internal/assets/templates/templates_gen.go b/internal/assets/templates/templates_gen.go index 95ad6cc42..758eb0712 100644 --- a/internal/assets/templates/templates_gen.go +++ b/internal/assets/templates/templates_gen.go @@ -60,7 +60,7 @@ // ../../../templates/repo/commits.tmpl (240B) // ../../../templates/repo/commits_table.tmpl (3.074kB) // ../../../templates/repo/create.tmpl (4.626kB) -// ../../../templates/repo/diff/box.tmpl (6.577kB) +// ../../../templates/repo/diff/box.tmpl (6.683kB) // ../../../templates/repo/diff/page.tmpl (1.714kB) // ../../../templates/repo/diff/section_unified.tmpl (918B) // ../../../templates/repo/editor/commit_form.tmpl (2.557kB) @@ -1417,7 +1417,7 @@ func repoCreateTmpl() (*asset, error) { return a, nil } -var _repoDiffBoxTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x58\xdd\x8f\xdb\xb8\x11\x7f\xf6\xfe\x15\x53\xd5\xc8\xda\xd7\xb5\x8c\x4b\xf2\x50\x5c\x64\x17\xf7\x55\xdc\x02\x69\x7a\xc8\xee\xbb\x41\x9b\x23\x8b\x0d\x4d\xea\x48\x6a\xbd\x5b\xd5\xff\x7b\x31\xa4\xbe\xfd\x91\xdd\xa0\xe9\xc3\xe1\x5e\x6c\x89\xe4\x0c\x67\x7e\xf3\x9b\xe1\x50\x65\x29\x52\x88\x7f\x12\x69\xfa\x41\xbb\xef\x1f\x98\x90\x6c\x2d\xf1\x70\xb8\x1a\x25\xd9\xdb\x65\x59\xc6\xe2\xdb\xbf\xaa\xf8\xde\x40\x64\x30\xd7\x31\x17\x69\x1a\x73\xe6\xd8\x4a\x69\xb7\x62\xf5\xfa\xe8\x70\x48\xe6\xd9\xdb\xe5\x55\x59\xa2\xb4\x41\x9c\x8b\x07\xd8\x48\x66\xed\x22\x22\xa9\x19\x47\xc7\x84\x9c\xad\xf5\x23\xf8\xf7\xb5\x7e\x8c\x96\x57\x23\xbf\x90\xfe\x47\x89\xa8\xd7\xa7\x0c\x52\x36\x33\xe8\xf6\x88\x2e\x5a\x26\x73\xe1\x17\x9c\xb6\xc6\x3a\xe6\xec\x8a\xa3\xdd\x44\xc1\x91\xf8\x43\xb1\xfb\xbb\x90\x68\xab\xd7\x7b\xed\x98\xfc\x9e\x73\xe1\x84\x56\xbd\xc1\x9f\x50\x62\x18\xfc\x0f\xdc\x39\xf3\xfa\x97\xfb\x7f\xbc\x27\xdb\x47\x3d\xeb\x0b\x01\x46\x6c\x33\xe7\xad\x1d\x8d\x12\xd6\x99\x70\x42\x3d\xc1\x9a\x59\xb1\x01\xa7\xb7\x5b\x89\xb0\x2e\x9c\xd3\x2a\x82\xcc\x60\xba\x88\xfe\x66\xdd\x93\xc4\x45\x40\xf9\xd6\xde\xe5\x52\xb8\x3b\x1a\x3a\x1c\x0a\x25\x52\x81\xbc\x46\xcc\xd2\x54\x59\xa2\xe2\x87\x43\xb4\x2c\x4b\x18\x4a\xc0\xe1\x70\x06\x80\x4c\xef\x57\x95\xb6\xd5\x83\xc0\x7d\x44\x2b\x83\xd6\x0b\x12\x7e\xc3\xce\x7a\xda\x38\x99\xb3\x17\x39\x49\x4c\x98\x39\x66\xb6\xe8\x16\xd1\x9f\x7d\x58\x53\x42\x3e\x3a\xc3\x1c\xbf\x31\x3d\xad\x7c\xd4\xa2\x76\xc7\x64\x5e\xd1\xa0\x7d\xd0\xb2\xe1\x4f\xa0\x8e\x57\x0d\x99\xe0\x18\x81\xe0\x15\xad\xaa\xfd\x02\x3f\x0c\x53\x5b\xac\x22\xec\x29\x10\xa2\x39\x4a\x64\x60\xd0\xe8\x98\x96\x1b\x5d\x28\x87\x06\xfc\x3f\xe4\x85\x94\xb3\x6e\xb4\x49\xab\x48\x41\x69\x47\xd1\xf8\x41\x28\x66\x9e\x2a\xa5\xa4\xcd\xe6\x4c\xd5\xea\x18\xe7\x15\x22\x52\x28\x5c\x44\x65\x49\x4c\x6c\x88\x17\xc2\x3a\x18\x4a\xe6\xa4\x61\x79\x52\xdf\x9a\x99\xc6\x88\xc1\x94\x37\x53\x62\xea\x80\x36\x5d\x0e\xb4\x9c\x5b\xcb\x51\x1e\xad\xbd\x64\x00\xad\x3f\x76\xa8\x49\x9a\xd6\xa1\xce\x50\x5f\x5f\x5b\x0e\x3a\xea\x97\x65\x39\x3e\x45\x8e\xb5\x50\xd1\x09\x05\xc4\xcb\x2a\x76\x35\x35\xe8\xf9\x4f\xb3\x19\x38\xcd\x35\xa4\x42\x09\x9b\x01\x93\x12\x88\x0b\x40\xcc\x2a\xec\x0d\x28\xbd\x87\x9d\xe6\x22\x7d\xba\x21\x94\x6e\xc8\x7d\x74\x08\x4c\x71\x30\xa8\xd8\x0e\x61\x36\xab\xb5\x75\xdd\x0e\x0a\xa0\x2c\x89\x46\xc4\xa2\xfb\xa7\x1c\xef\xf5\x9d\x33\x10\xd3\xe3\xe1\x00\xb9\xce\x85\xda\x42\x91\x57\xf8\x6c\xb4\x72\xa8\x1c\x41\x74\x56\xa8\x5a\xfa\xc0\x8c\x60\x04\xd6\x22\x12\xea\x01\x8d\x43\xee\x13\xac\x9a\xce\xb5\x15\x61\xd6\xb3\x10\x36\x48\xec\x8c\x96\xaf\xd4\xda\xe6\xef\x7a\xe0\xb4\x39\x4a\x7e\xd7\x15\x27\x64\x61\x59\xc6\xb7\x8a\xe3\x63\x1d\x23\xb6\xc3\x6e\x76\xcf\x65\x5d\x51\x6b\x78\x93\xb9\x96\xcb\xab\x1a\xe2\xab\x26\x97\xc6\xe2\x06\xc6\x1e\xd7\xef\x16\x47\x89\xe5\x53\xc3\xcf\xc6\xb7\xf6\x56\x6d\xf4\x2e\x27\x88\x8f\x4b\x68\x93\xa9\xbd\xf2\xef\xe3\x55\x63\x57\x57\xd7\xec\x6d\xb7\xf2\xe8\x1c\x98\x73\x6c\x93\x21\x07\xa5\xcd\x8e\x49\xc8\x90\x71\x6c\x32\xe3\x0c\x97\x48\xf3\xca\x16\x79\x6e\xd0\x5a\xe4\x51\x43\xa1\xcb\xe9\x5f\x08\xa0\x4c\x39\xce\xfd\xda\xc9\x8f\x9e\x38\xfc\xcb\x2b\xc0\x5f\xe0\x77\x57\x03\x66\xf0\xf9\x2a\x70\x26\x89\xbb\x3b\x79\x12\x53\x6d\xf0\x50\xd7\x8c\x6d\xf5\x84\x06\xa3\xab\xa1\x5b\x5d\x5e\xc8\x36\x28\xcb\x7b\xb6\xbe\x13\xff\xc6\x1f\x49\x06\xc6\xf1\xcf\x5c\x38\x6d\x36\x5a\xa5\x62\x0b\x5d\x1b\x3a\x67\x4d\x37\xab\xbe\x88\xad\x5f\x42\xbf\x9a\x7a\xc3\xb3\xe7\x62\x15\xed\xd5\x5f\xf8\x83\xc4\xff\x6f\x12\x77\xe2\xd6\xa0\x5d\x53\xfb\x9f\x92\x07\x66\xc1\x2b\xc3\x8c\x79\x07\x95\xea\xf3\xd4\x3f\xae\x43\x77\xc5\x7a\xa7\x79\x21\xdb\xb3\xf5\x42\xc7\x3a\x64\x92\xf7\xb1\x1b\xff\x7e\xbb\x17\x3a\xbd\xad\xc1\xa7\xaa\xf3\xab\x9a\x3d\x83\x72\x11\x29\x9d\x6a\x29\xf5\xbe\x3e\x6e\xca\xf2\x67\xbb\x61\x39\xfe\xaa\x0b\xc5\x61\x1c\xff\x80\xa9\x36\x78\xa7\x0b\xb3\xc1\x5f\x99\xcb\x0e\x87\x79\x7f\x49\x9d\x55\xe7\xba\x00\x6a\x48\x57\x1e\xc6\xce\x81\xd5\xa3\xf2\x38\xee\xaa\x87\xb2\x9c\x7f\x03\x1f\x34\xb4\x83\xb0\x47\x60\xd6\x16\x3b\x04\x97\x21\x58\x3f\x01\xb4\x85\xa5\x1c\x7f\x02\xa5\x41\x6a\xb5\x45\x03\xf8\x28\xac\xb3\xf0\xcd\xfc\xab\x80\xf1\x75\x60\x68\x69\xd8\xe3\x61\x77\xa6\xa9\x95\x43\x5a\x14\xca\x3a\xb6\xf9\x44\x77\xb6\xb6\x54\x39\xff\x6a\x71\xbb\x6b\xcf\xe1\xcf\x1f\x7d\x65\x39\x16\xf6\x76\xc7\xb6\xbe\x35\x98\x6c\xa8\x01\x1b\x53\x1f\x40\x43\xd4\x23\x74\xaa\xe8\xb4\x23\x45\x11\xac\x04\x3b\x15\xa8\x63\x66\xdd\xf2\xb4\x01\x11\xbb\x2d\x58\xb3\x21\x80\xc7\xf1\x47\xb6\xbf\x8c\x68\x5b\x11\x5a\x70\x8e\x3b\xd1\xce\x86\xd5\x51\xc1\x9f\xea\x23\x82\x23\xd0\xcf\x8c\x82\x10\x9e\x28\x26\x5d\x8b\x3c\x64\xed\xfb\x28\x71\x24\xdf\x19\xa8\x1c\x1d\xdc\xf9\x3a\xf3\x84\x5f\x26\xb6\x99\xa4\x44\x0d\x87\xd0\x77\x8b\x0a\xb2\x5f\x7a\xe3\x43\xb1\xaa\x31\xfb\xd7\x0d\x8c\x2d\x6e\xa8\x58\xb5\x92\x77\x61\x60\x20\xd3\x0a\x7d\xba\x81\x31\xd5\x40\x2f\x51\x49\xc7\xef\x85\xc2\xa1\xc4\x28\x71\xa6\xc6\x27\x34\xb5\xb4\xea\xa8\xa9\x0d\x60\x29\x39\x2b\xcb\xf1\xa7\xc3\x01\x74\xfd\x14\x2d\xfb\xea\x02\x1e\xf8\x5b\x10\x84\xb7\xc3\xed\x68\x43\x5e\x6f\x48\x16\xda\x99\x2a\x76\x54\xe5\x1d\x1f\xaa\x0a\x4b\xb5\xa4\x02\xb9\x88\xde\x44\xd0\x97\x23\x93\x8e\xb6\x1f\x8d\x92\xdc\xe0\x32\x09\xc1\xad\xfd\xa2\x10\x65\x03\xb0\x25\x53\xdb\x82\x6d\x71\x76\x14\xa0\xf6\x5a\xad\x74\x33\xd3\xb9\xb2\x37\x80\xfe\xa8\x77\x79\xe1\x90\xdf\x2a\xb2\xc8\xdf\x08\xb4\x09\xc0\x53\x36\x93\x0d\xcb\x64\x4e\xf6\x1c\x79\x76\xc2\xdd\x21\x75\x2f\x01\x06\xcd\xd3\x4c\x4b\x1e\x41\x70\x91\x06\xe3\xf7\x98\xba\xf7\xde\x82\x6e\x43\x73\x97\xb1\x6f\xeb\x14\x0f\xad\xcd\xfb\xb2\x1c\x0a\x74\x0e\x4f\x52\xbd\x46\xe3\x53\x71\xb8\xaa\x82\xe2\x59\x4e\x1d\x5b\xef\x23\x93\x31\x99\xee\x05\x77\xd9\xb3\x02\xb8\x37\x2c\x87\xff\x75\x14\x4f\x00\xf6\xdc\xd0\x36\x5f\x51\x5e\x18\xe1\xcf\x85\x52\xe1\xbe\x17\xca\x8f\x64\xf2\x73\x62\xf9\xb1\x8e\x52\x47\xe2\x52\x30\xbb\xcb\x7e\x67\xd1\xec\xb8\xf6\xb5\xc3\xd9\x3f\xa3\xdb\x85\x66\x79\xf5\x99\x65\xc7\x43\xa7\x92\xbf\x2c\x1d\xee\x72\xc9\x1c\x86\x8e\x61\x4e\xf1\x9f\x57\x2e\xd5\x5f\x02\x23\x88\x87\x8a\xfa\xaa\x93\xf9\xe0\xcc\x4a\xe6\xfd\x53\x6d\x78\x7e\xb6\xe2\xfd\x56\xa3\xf9\x7e\xdb\xb9\x97\x85\xe9\x64\x4d\x2e\xd7\xaf\x57\xa3\xf6\x63\xf3\xf1\xf7\x82\x2f\xfa\x5c\xf0\xc2\xfb\xd7\x99\x5e\xcb\x69\xbd\xda\x31\xf5\xb4\x0a\xdf\x12\xab\x0b\x65\xd5\x42\xd5\x5e\x0d\xbd\x38\x3a\xd8\x13\xbb\x31\x22\x77\x7e\xa7\x49\x5a\x28\x1f\x8d\xc9\x14\x4a\xbf\xf5\x78\x72\x1d\x33\xce\x7d\x5e\x5c\x4f\x63\x64\x9b\xec\x78\xd1\xe8\x81\x19\xc8\x0d\x3e\xc0\x02\xc6\x13\x97\x09\x3b\x8d\xe9\x75\x32\x7d\x17\xe6\x45\x3a\xa1\xf7\x58\xd8\xc9\x75\xcc\x51\x56\xea\xe0\xd5\x2b\x2f\x16\x6f\x32\x21\xb9\x41\x35\x99\xc6\xf8\xdb\xe4\xcd\x34\x76\xf8\xe8\x26\xd3\xd8\x19\xb1\x9b\x4c\x61\xb1\x58\xc0\xf5\x75\xb3\xdb\x68\x9f\x09\x89\x41\x63\xd8\xe6\xac\xe2\x6a\xfa\x85\xfa\x47\x95\x2f\x1d\x15\x95\x23\xa3\x9a\x88\xa7\xcd\xce\xdc\x4e\x4e\x6a\x04\x4e\xcf\x4e\x1b\x55\x27\x54\xbc\xbe\xa8\xe2\xf5\x73\x54\xbc\x99\x52\xbc\x7c\x8d\x99\x5c\xb7\x91\xbb\xbc\xe9\x25\x89\xda\x16\x83\x3b\xfd\x80\x0d\x12\x01\x88\x43\x78\x3d\x54\x36\x25\xf3\x86\x4c\x35\xef\xea\xff\xff\x06\x00\x00\xff\xff\xef\x3f\xd6\x97\xb1\x19\x00\x00" +var _repoDiffBoxTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x58\x5b\x73\xe3\xb6\x15\x7e\x96\x7f\xc5\x29\xab\x59\x4b\xa9\x45\x4d\xb2\xfb\xd0\xc9\x52\xea\x64\x93\x74\xe2\x19\x77\x9b\x59\xfb\x5d\x03\x09\x87\x22\xba\x10\xc0\x80\xa0\x65\x95\xe5\x7f\xef\x1c\xf0\x06\x52\x97\xb5\x32\xd9\x87\xf6\xc5\xa6\x00\x9c\x0f\xe7\xf2\x9d\x0b\x59\x14\x22\x86\xf0\x27\x11\xc7\x1f\xb5\xfd\xe1\x99\x09\xc9\xd6\x12\xcb\xf2\x66\x14\x25\xef\x96\x45\x11\x8a\x6f\xff\xaa\xc2\x27\x03\x81\xc1\x54\x87\x5c\xc4\x71\xc8\x99\x65\x2b\xa5\xed\x8a\x35\xe7\x83\xb2\x8c\xe6\xc9\xbb\xe5\x4d\x51\xa0\xcc\x2a\x71\x2e\x9e\x61\x23\x59\x96\x2d\x02\x92\x9a\x71\xb4\x4c\xc8\xd9\x5a\xbf\x80\xfb\xbd\xd6\x2f\xc1\xf2\x66\xe4\x0e\xd2\xff\x51\x24\x9a\xf3\x31\x83\x98\xcd\x0c\xda\x3d\xa2\x0d\x96\xd1\x5c\xb8\x03\xa7\xb5\xc9\x2c\xb3\xd9\x8a\x63\xb6\x09\x2a\x43\xc2\x8f\xf9\xee\xef\x42\x62\x56\xff\x7c\xd2\x96\xc9\x1f\x38\x17\x56\x68\xd5\x5b\xfc\x09\x25\x56\x8b\xff\x81\x47\x6b\xbe\xfb\xe5\xe9\x1f\x0f\xa4\xfb\xa8\xa7\x7d\x2e\xc0\x88\x6d\x62\x9d\xb6\xa3\x51\xc4\xbc\x0d\x2b\xd4\x01\xd6\x2c\x13\x1b\xb0\x7a\xbb\x95\x08\xeb\xdc\x5a\xad\x02\x48\x0c\xc6\x8b\xe0\x6f\x99\x3d\x48\x5c\x54\x5e\xbe\xcf\x1e\x53\x29\xec\x23\x2d\x95\x65\xae\x44\x2c\x90\x37\x1e\xcb\x68\xab\x28\x50\xf1\xb2\x0c\x96\x45\x01\x43\x09\x28\xcb\x33\x0e\x48\xf4\x7e\x55\xa3\xad\x9e\x05\xee\x03\x3a\x59\xa1\x5e\x90\x70\x17\x7a\xe7\xe9\xe2\x68\xce\xae\x32\x92\x98\x30\xb3\xcc\x6c\xd1\x2e\x82\x3f\xbb\xb0\xc6\xe4\xf9\xe0\x0c\x73\xdc\xc5\xf4\xb4\x72\x51\x0b\xba\x1b\xa3\x79\x4d\x83\xee\x41\xcb\x96\x3f\x15\x75\x1c\x34\x24\x82\x63\x00\x82\xd7\xb4\xaa\xef\xab\xf8\x61\x98\xda\x62\x1d\x61\x47\x81\x2a\x9a\xa3\x48\x56\x0c\x1a\x1d\xd3\x72\xa3\x73\x65\xd1\x80\xfb\x0f\x69\x2e\xe5\xcc\x8f\x36\xa1\x8a\x18\x94\xb6\x14\x8d\x0f\x42\x31\x73\xa8\x41\x09\x2d\x4b\x99\x6a\xe0\x18\xe7\xb5\x47\xa4\x50\xb8\x08\x8a\x82\x98\xd8\x12\xaf\x0a\xeb\x60\x29\x9a\x13\xc2\xf2\x24\xde\x9a\x99\x56\x89\xc1\x96\x53\x53\x62\x6c\x81\x2e\x5d\x0e\x50\xce\x9d\xe5\x28\x8f\xce\x5e\x52\x80\xce\x1f\x1b\xd4\x26\x4d\x67\x90\xb7\xd4\xc7\xeb\xca\x81\x07\xbf\x2c\x8a\xf1\x29\x72\xac\x85\x0a\x4e\x00\x10\x2f\xeb\xd8\x35\xd4\xa0\xe7\x3f\xcd\x66\x60\x35\xd7\x10\x0b\x25\xb2\x04\x98\x94\x40\x5c\x00\x62\x56\x9e\xdd\x81\xd2\x7b\xd8\x69\x2e\xe2\xc3\x1d\x79\xe9\x8e\xcc\x47\x8b\xc0\x14\x07\x83\x8a\xed\x10\x66\xb3\x06\xcd\x37\xbb\x02\x80\xa2\x20\x1a\x11\x8b\x9e\x0e\x29\x3e\xe9\x47\x6b\x20\xa4\xc7\xb2\x84\x54\xa7\x42\x6d\x21\x4f\x6b\xff\x6c\xb4\xb2\xa8\x2c\xb9\xe8\xac\x50\x7d\xf4\x99\x19\xc1\xc8\x59\x8b\x40\xa8\x67\x34\x16\xb9\x4b\xb0\x7a\x3b\xd5\x99\xa8\x76\x1d\x0b\x61\x83\xc4\xce\x60\xf9\x46\xad\xb3\xf4\x7d\xcf\x39\x5d\x8e\x92\xdd\x4d\xc5\xa9\xb2\xb0\x28\xc2\x7b\xc5\xf1\xa5\x89\x11\xdb\xa1\x9f\xdd\x73\xd9\x54\xd4\xc6\xbd\xd1\x5c\xcb\xe5\x4d\xe3\xe2\x9b\x36\x97\xc6\xe2\x0e\xc6\xce\xaf\xdf\x2f\x8e\x12\xcb\xa5\x86\xdb\x0d\xef\xb3\x7b\xb5\xd1\xbb\x94\x5c\x7c\x5c\x42\xdb\x4c\xed\x95\x7f\x17\xaf\xc6\x77\x4d\x75\x4d\xde\xf9\x95\x47\xa7\xc0\xac\x65\x9b\x04\x39\x28\x6d\x76\x4c\x42\x82\x8c\x63\x9b\x19\x67\xb8\x44\xc8\xab\x2c\x4f\x53\x83\x59\x86\x3c\x68\x29\x74\x39\xfd\x73\x01\x94\x29\x6d\xda\x5d\x9b\xdf\x7f\x81\x2f\x64\xf8\xf9\x04\xbf\x22\xbf\x5f\x9f\xde\x17\x2e\x7f\x45\x72\xcf\xe0\x72\x7a\xf7\xf2\xd1\xc7\x76\x7c\xa4\x34\x77\xd4\x68\xc8\xd7\x49\x56\xb3\x82\x8f\xe0\x17\x8a\x2b\x89\x03\x45\xf1\xc4\xd6\x8f\xe2\xdf\xf8\x23\xc9\xc0\x38\xfc\x99\x0b\xab\xcd\x46\xab\x58\x6c\xc1\xd7\xc1\x6b\x1b\x7e\x82\xfc\x2e\xe2\x5d\xc9\xa4\x5e\xaa\x0c\xdb\xc8\xc5\x82\x78\xa9\x94\xfe\x91\xd4\xfc\xdf\x6b\x3e\x5f\xe2\xe7\x85\xee\x71\x8a\xad\x5e\x80\x3e\xb9\xfe\xc0\x69\x2e\xaa\x96\xfe\x29\x79\x45\x21\x78\x63\x98\x31\xef\xa1\x86\x3e\xcf\xf1\x6e\x6e\x68\x40\x1f\xf3\xf5\x4e\xf3\x5c\x76\x41\xbc\x30\x65\x0e\x29\xe3\x6c\x44\xde\xc5\xbf\x3f\xa2\x55\xd3\xd9\xd6\xe0\xa1\x9e\xd6\xea\x01\xcd\xa0\x5c\x04\x4a\xc7\x5a\x4a\xbd\x6f\x5a\x44\x51\xfc\x9c\x6d\x58\x8a\xbf\xea\x5c\x71\x18\x87\x1f\x30\xd6\x06\x1f\x75\x6e\x36\xf8\x2b\xb3\x49\x59\xce\xfb\x47\x9a\xf4\x39\xd7\xb9\x69\x88\x5c\x39\x37\x7a\x4d\xa6\xe5\x2c\x4d\xb2\xe3\xd0\x87\x87\xa2\x98\x7f\x03\x1f\x35\x74\x8b\xb0\x47\x60\x59\x96\xef\x10\x6c\x82\x90\xb9\x0d\xa0\x2b\x32\x4a\xe6\x03\x28\x0d\x52\xab\x2d\x1a\xc0\x17\x91\xd9\x0c\xbe\x99\x7f\x15\x67\x7c\x1d\x37\x74\x34\xec\xf1\xd0\xdf\x69\x8b\xe2\x90\x16\xb9\xca\x2c\xdb\x7c\xa6\xf7\xac\xae\x26\x59\xf7\x33\xc3\xed\xae\xeb\x9d\x54\x47\x44\x76\xbf\x63\x5b\xd7\xad\x63\xe6\x15\x8c\x8b\x64\xf2\xe4\x16\x30\xd9\xd0\x28\x35\xa6\x8e\x4e\x2b\xd4\xed\x3f\x1c\x5c\xad\x6c\xe4\xe9\x79\xda\x01\xf7\xea\xd2\x97\xa0\xbc\x7a\xec\x43\x38\x2f\xf8\x9a\xd6\x20\x27\x53\xa5\x99\x89\x5e\x9b\x28\x62\xb7\x85\xcc\x6c\x28\xd6\x0d\xd9\x3f\xb1\xfd\xe5\x10\xf7\x29\x7c\x16\xed\x1a\x9c\xf3\x1c\xf0\x6f\xf0\x0d\xad\x1b\x1f\x3f\x34\x0d\x8f\x23\xd0\x9f\x19\x31\xad\x7a\x22\xe2\x79\x43\x84\xa3\x85\x57\x8b\x2d\x49\x77\xbf\x6b\x57\x0d\xde\x44\xbb\x6d\x0a\x5f\x22\xb6\x89\xa4\x4a\x54\xb5\xd3\xef\x17\xb5\x6b\x7f\xe9\xad\x0f\xa4\xea\x61\xf1\x5f\x77\x30\xce\x70\x43\xc5\xb8\x13\x7c\xac\x16\xfa\x22\x9d\xcc\xe7\x3b\x18\x53\x89\x77\x02\xb5\x70\xf8\x20\x14\x0e\x04\x46\x91\x35\x8d\x63\xaa\x31\x9b\x0e\x1d\x8d\xd9\x95\x97\x94\x9c\x15\xc5\xf8\x73\x59\x82\x6e\x9e\xbc\x76\xd6\xb9\x02\x7f\xab\xe4\xe0\xdd\xe0\x32\xba\x8e\x37\xd7\x91\x7a\xd9\x4c\xe5\x3b\xea\x60\x96\x2f\x4f\x9d\xd4\x92\x6a\xff\x22\x78\x1b\x40\x5f\x8c\xf4\x19\xde\x3d\x1a\x45\xa9\xc1\x65\x54\x45\xb4\xb1\x89\x42\x93\x0c\xbc\x2c\x99\xda\xe6\x6c\x8b\xb3\xa3\xc8\x74\x2f\xf9\x4a\xb7\x3b\xde\x07\x84\xd6\x97\x3f\xea\x5d\x9a\x5b\xe4\xf7\x8a\x14\x72\xef\x27\xda\x54\x3e\xa7\x3a\x45\x3a\x2c\xa3\x39\xe9\x33\xb4\xeb\xd8\xd6\xa3\x74\x38\xef\x2b\x68\x9f\x66\x5a\xf2\x00\x2a\xfb\x68\x31\x7c\xc0\xd8\x3e\xb8\xeb\xfd\x81\xec\x31\x61\xdf\xfa\x25\xa6\x2c\x1f\x8a\x62\x28\xe0\xcd\x04\x04\xbd\x46\xe3\x12\x71\x78\xaa\xf6\xc3\x2b\x2c\x3a\xd6\xdd\x05\x25\x61\x32\xde\x0b\x6e\x93\xd7\x84\x6e\x6f\x58\x0a\x7f\x74\xfc\x4e\x78\xeb\xb5\x41\x6d\xbf\xe6\x5c\x15\xdb\x2f\x45\x51\xe1\xbe\x17\xc5\x4f\xa4\xf0\x6b\xc2\xf8\xa9\x09\x90\x27\x71\x29\x8e\xfe\xb1\xff\xa7\x40\x7a\x76\x7d\xdd\x48\xf6\x9b\x4d\x7b\xcc\x2c\x6f\x2e\x1e\x3a\x5a\x39\x91\xed\x45\x61\x71\x97\x4a\x66\xb1\x9a\x7c\xe6\x14\xf5\x79\x6d\x4b\xf3\x15\x32\x80\x70\x00\xd3\xc3\x8d\xe6\xfd\xb6\x14\xcd\x7b\x6d\xeb\xfc\x80\xd4\x7e\x29\xf6\x5e\x1b\xab\xed\x68\x4d\xc6\x75\x83\x44\xf7\x59\xfb\xf8\xcb\xc4\xef\xfa\x30\x71\xe5\xeb\xe1\x99\x09\xd1\x6a\xbd\xda\x31\x75\x58\x55\x5f\x2d\xeb\xf7\xdd\x7a\xf0\x6b\xac\x1a\x5a\x71\xd4\xac\xa3\x6c\x63\x44\x6a\xdd\x4d\x93\x38\x57\xce\xf7\x93\x29\x14\xee\xea\xf1\xe4\x36\x64\x9c\x3b\xf6\xdf\x4e\x43\x64\x9b\xe4\xf8\xd0\xe8\x99\x19\x48\x0d\x3e\xc3\x02\xc6\x13\x9b\x88\x6c\x1a\xd2\xcf\xc9\xf4\x7d\xb5\x2f\xe2\x09\xfd\x0e\x45\x36\xb9\x0d\x39\xca\x1a\x0e\xde\xbc\x71\x62\xe1\x26\x11\x92\x1b\x54\x93\x69\x88\xbf\x4d\xde\x4e\x43\x8b\x2f\x76\x32\x0d\xad\x11\xbb\xc9\x14\x16\x8b\x05\xdc\xde\xb6\xb7\x8d\xf6\x89\x90\x58\x21\x56\xd7\x9c\x05\xae\xb7\xaf\xc4\x1f\xd5\xb6\x78\x10\xb5\x21\xa3\x86\x77\xa7\xd5\x4e\xec\x4e\x4e\x1a\x0f\x9c\xde\x9d\xb6\x50\x27\x20\xbe\xbb\x08\xf1\xdd\x6b\x20\xde\x4e\x29\x5e\xae\x94\x4c\x6e\xbb\xc8\x5d\xbe\xf4\x92\x44\xa3\x8b\xc1\x9d\x7e\xc6\xd6\x13\x95\x23\xca\xea\x67\x59\xeb\x14\xcd\x5b\x32\x35\xbc\x6b\xfe\xff\x37\x00\x00\xff\xff\x91\xdb\x58\xd7\x1b\x1a\x00\x00" func repoDiffBoxTmplBytes() ([]byte, error) { return bindataRead( @@ -1432,8 +1432,8 @@ func repoDiffBoxTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/diff/box.tmpl", size: 6577, mode: os.FileMode(0644), modTime: time.Unix(1583774436, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x2a, 0xee, 0xfa, 0x1a, 0xc5, 0xb9, 0x10, 0x4, 0xe6, 0xcb, 0xc5, 0xf9, 0xd9, 0x3c, 0xc1, 0xad, 0x3b, 0x62, 0xa, 0xd6, 0x26, 0x6d, 0xfe, 0x4e, 0xb9, 0xcc, 0x38, 0xa, 0xfb, 0xca, 0xa1}} + info := bindataFileInfo{name: "repo/diff/box.tmpl", size: 6683, mode: os.FileMode(0644), modTime: time.Unix(1585600811, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0xbf, 0xac, 0xd5, 0xea, 0x25, 0x2, 0xe9, 0x98, 0xb1, 0xc6, 0x1e, 0x41, 0x64, 0xc8, 0xf0, 0x9d, 0x13, 0xdc, 0xbd, 0x7d, 0x5e, 0xd9, 0x81, 0xf6, 0x93, 0xeb, 0x17, 0xe0, 0x98, 0xd, 0x6}} return a, nil } @@ -2132,7 +2132,7 @@ func repoSettingsGithooksTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/githooks.tmpl", size: 928, mode: os.FileMode(0644), modTime: time.Unix(1584870152, 0)} + info := bindataFileInfo{name: "repo/settings/githooks.tmpl", size: 928, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2b, 0x8c, 0xe3, 0x3f, 0xe3, 0x4b, 0xcc, 0x73, 0x4c, 0x9e, 0xc2, 0x69, 0x51, 0x5d, 0x74, 0x56, 0x49, 0xe3, 0x87, 0x9, 0x7e, 0x2c, 0xc4, 0x38, 0xf1, 0x68, 0x96, 0x99, 0xa7, 0x1e, 0xbf, 0x87}} return a, nil } @@ -2252,7 +2252,7 @@ func repoSettingsWebhookDingtalkTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/dingtalk.tmpl", size: 665, mode: os.FileMode(0644), modTime: time.Unix(1584877872, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/dingtalk.tmpl", size: 665, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0x8d, 0xcf, 0x8d, 0x6b, 0xf9, 0x4, 0xe0, 0xcb, 0xdc, 0x54, 0x4d, 0x49, 0x8a, 0xf1, 0x61, 0xba, 0x5e, 0x76, 0x48, 0x2, 0x3, 0xa6, 0xb5, 0xc5, 0xd8, 0x20, 0x67, 0xc1, 0x98, 0x73, 0x37}} return a, nil } @@ -2272,7 +2272,7 @@ func repoSettingsWebhookDiscordTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/discord.tmpl", size: 1217, mode: os.FileMode(0644), modTime: time.Unix(1584877671, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/discord.tmpl", size: 1217, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x5f, 0xec, 0x8, 0x7c, 0xb0, 0xcb, 0x7f, 0x47, 0xc9, 0xe8, 0x35, 0x65, 0xbe, 0x44, 0xd4, 0x36, 0x34, 0xd7, 0x47, 0x2, 0xcc, 0xf3, 0x7f, 0xdf, 0xa6, 0xe3, 0x30, 0x5a, 0x7a, 0xf2, 0xe6}} return a, nil } @@ -2292,7 +2292,7 @@ func repoSettingsWebhookGogsTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/gogs.tmpl", size: 1478, mode: os.FileMode(0644), modTime: time.Unix(1584876104, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/gogs.tmpl", size: 1478, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x26, 0xa8, 0x9, 0xef, 0xbe, 0x27, 0x7c, 0x4c, 0x80, 0x9f, 0x72, 0x94, 0xa7, 0x13, 0x74, 0xe9, 0x2, 0x4d, 0x5e, 0x6b, 0x67, 0x13, 0x91, 0x49, 0xdd, 0xb8, 0xea, 0x3e, 0x94, 0x2, 0x4c}} return a, nil } @@ -2332,7 +2332,7 @@ func repoSettingsWebhookListTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/list.tmpl", size: 2048, mode: os.FileMode(0644), modTime: time.Unix(1584878453, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/list.tmpl", size: 2048, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x27, 0xc4, 0xff, 0x53, 0xd3, 0x99, 0x7c, 0xfb, 0x28, 0x44, 0x9f, 0xb5, 0x7c, 0xe7, 0xb0, 0xad, 0xbe, 0xe4, 0x77, 0x7b, 0x25, 0xc4, 0x63, 0x9, 0xd2, 0x35, 0x28, 0x7a, 0xb4, 0x24, 0x19, 0x46}} return a, nil } @@ -2372,7 +2372,7 @@ func repoSettingsWebhookSettingsTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/settings.tmpl", size: 5012, mode: os.FileMode(0644), modTime: time.Unix(1584876630, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/settings.tmpl", size: 5012, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x47, 0xca, 0xf8, 0xb1, 0x40, 0xb, 0x78, 0xcc, 0x74, 0x3e, 0x89, 0xde, 0xfa, 0xda, 0x23, 0x76, 0x81, 0xda, 0xb1, 0x3f, 0xef, 0xec, 0x3d, 0x98, 0xa7, 0xd0, 0xa8, 0x16, 0xea, 0x3d, 0x8d, 0x45}} return a, nil } @@ -2392,7 +2392,7 @@ func repoSettingsWebhookSlackTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "repo/settings/webhook/slack.tmpl", size: 1480, mode: os.FileMode(0644), modTime: time.Unix(1584877665, 0)} + info := bindataFileInfo{name: "repo/settings/webhook/slack.tmpl", size: 1480, mode: os.FileMode(0644), modTime: time.Unix(1585058589, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd0, 0x90, 0xae, 0xea, 0xe4, 0x8, 0x4, 0xfe, 0x98, 0xe6, 0xa3, 0x79, 0x5e, 0x79, 0x21, 0xdb, 0x16, 0xc8, 0xcd, 0x46, 0x18, 0x7a, 0xb2, 0xea, 0x2e, 0xd2, 0xa5, 0xe1, 0xf5, 0x99, 0xab, 0xf9}} return a, nil } diff --git a/internal/route/repo/commit.go b/internal/route/repo/commit.go index e8ff33808..00be5b1a5 100644 --- a/internal/route/repo/commit.go +++ b/internal/route/repo/commit.go @@ -152,16 +152,18 @@ func Diff(c *context.Context) { c.Data["Username"] = userName c.Data["Reponame"] = repoName c.Data["IsImageFile"] = commit.IsImageFile + c.Data["IsImageFileByIndex"] = commit.IsImageFileByIndex c.Data["Commit"] = commit c.Data["Author"] = db.ValidateCommitWithEmail(commit) c.Data["Diff"] = diff c.Data["Parents"] = parents c.Data["DiffNotAvailable"] = diff.NumFiles() == 0 c.Data["SourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", commitID) + c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", commitID) if commit.ParentsCount() > 0 { c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", parents[0]) + c.Data["BeforeRawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", parents[0]) } - c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", commitID) c.Success(DIFF) } @@ -213,12 +215,14 @@ func CompareDiff(c *context.Context) { c.Data["Username"] = userName c.Data["Reponame"] = repoName c.Data["IsImageFile"] = commit.IsImageFile + c.Data["IsImageFileByIndex"] = commit.IsImageFileByIndex c.Data["Title"] = "Comparing " + tool.ShortSHA1(beforeCommitID) + "..." + tool.ShortSHA1(afterCommitID) + " ยท " + userName + "/" + repoName c.Data["Commit"] = commit c.Data["Diff"] = diff c.Data["DiffNotAvailable"] = diff.NumFiles() == 0 c.Data["SourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", afterCommitID) - c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", beforeCommitID) c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", afterCommitID) + c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", beforeCommitID) + c.Data["BeforeRawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", beforeCommitID) c.Success(DIFF) } diff --git a/internal/route/repo/pull.go b/internal/route/repo/pull.go index 14e9a5c32..7e064f408 100644 --- a/internal/route/repo/pull.go +++ b/internal/route/repo/pull.go @@ -378,6 +378,7 @@ func ViewPullFiles(c *context.Context) { c.Data["IsSplitStyle"] = c.Query("style") == "split" c.Data["IsImageFile"] = commit.IsImageFile + c.Data["IsImageFileByIndex"] = commit.IsImageFileByIndex // It is possible head repo has been deleted for merged pull requests if pull.HeadRepo != nil { @@ -386,8 +387,9 @@ func ViewPullFiles(c *context.Context) { headTarget := path.Join(pull.HeadUserName, pull.HeadRepo.Name) c.Data["SourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", endCommitID) - c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", startCommitID) c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "raw", endCommitID) + c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", startCommitID) + c.Data["BeforeRawPath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "raw", startCommitID) } c.Data["RequireHighlightJS"] = true @@ -595,11 +597,13 @@ func PrepareCompareDiff( c.Data["Username"] = headUser.Name c.Data["Reponame"] = headRepo.Name c.Data["IsImageFile"] = headCommit.IsImageFile + c.Data["IsImageFileByIndex"] = headCommit.IsImageFileByIndex headTarget := path.Join(headUser.Name, repo.Name) c.Data["SourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", headCommitID) - c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", meta.MergeBase) c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "raw", headCommitID) + c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "src", meta.MergeBase) + c.Data["BeforeRawPath"] = conf.Server.Subpath + "/" + path.Join(headTarget, "raw", meta.MergeBase) return false } diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 297c84f1e..1980d774f 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -39,14 +39,12 @@

{{$.i18n.Tr "repo.diff.file_suppressed"}}
- {{if not $file.IsRenamed}} - + {{.NumAdditions}} - - - - - - {{.NumDeletions}} - {{end}} + + {{.NumAdditions}} + + + + + - {{.NumDeletions}}
{{$file.Name}}

@@ -57,7 +55,7 @@
{{if $file.IsBinary}} {{$.i18n.Tr "repo.diff.bin"}} - {{else if not $file.IsRenamed}} + {{else}} + {{.NumAdditions}} @@ -78,48 +76,56 @@ {{end}}
- {{if not $file.IsRenamed}} - {{$isImage := (call $.IsImageFile $file.Name)}} - {{if $isImage}} -
+ {{$isImage := false}} + {{if $file.IsDeleted}} + {{$isImage = (call $.IsImageFileByIndex $file.Index)}} + {{else}} + {{$isImage = (call $.IsImageFile $file.Name)}} + {{end}} + + {{if $isImage}} +
+ {{if $file.IsDeleted}} + + {{else}} -
- {{else}} -
- - - {{if $.IsSplitStyle}} - {{$highlightClass := $file.HighlightClass}} - {{range $j, $section := $file.Sections}} - {{range $k, $line := $section.Lines}} - - {{if eq .Type 4}} - - - {{else}} - - - - - {{end}} - - {{end}} + {{end}} + + {{else}} +
+
-
{{$section.ComputedInlineDiffFor $line}}
-
- -
{{if $line.LeftLine}}{{$section.ComputedInlineDiffFor $line}}{{end}}
-
- -
{{if $line.RightLine}}{{$section.ComputedInlineDiffFor $line}}{{end}}
-
+ + {{if $.IsSplitStyle}} + {{$highlightClass := $file.HighlightClass}} + {{range $j, $section := $file.Sections}} + {{range $k, $line := $section.Lines}} + + {{if eq .Type 4}} + + + {{else}} + + + + + {{end}} + {{end}} - {{else}} - {{template "repo/diff/section_unified" .}} {{end}} - -
+
{{$section.ComputedInlineDiffFor $line}}
+
+ +
{{if $line.LeftLine}}{{$section.ComputedInlineDiffFor $line}}{{end}}
+
+ +
{{if $line.RightLine}}{{$section.ComputedInlineDiffFor $line}}{{end}}
+
-
- {{end}} + {{else}} + {{template "repo/diff/section_unified" .}} + {{end}} + + +
{{end}}