From mboxrd@z Thu Jan 1 00:00:00 1970 From: john at keeping.me.uk (John Keeping) Date: Sun, 12 Mar 2017 15:03:35 +0000 Subject: [PATCH v7 1/1] ui-shared: allow to split the repository link In-Reply-To: <20170220233604.19578-1-petr.vorel@gmail.com> References: <20170220233604.19578-1-petr.vorel@gmail.com> Message-ID: <20170312150335.GJ2102@john.keeping.me.uk> On Tue, Feb 21, 2017 at 12:36:04AM +0100, Petr Vorel wrote: > Teach cgit split the repository link in the top of repository "summary" > view. This emulates the same behaviour as it's in gitweb. > > This behaviour is not implemented for repositories which have > "repo.name" set different than "repo.url". > > Signed-off-by: Petr Vorel > Cc: "Jason A. Donenfeld" > Cc: John Keeping > Reviewed-by: John Keeping > --- > Thanks for your review John. Are we there yet? :-) I thought we were, but... I just applied this and it breaks t0103-log.sh 'no links with space in path'. Having looked at it, our general printing of repo URLs falls foul of that test - if you copy+paste it into t0101-index.sh then that fails as well, and the tests are right to fail here. Given that, I don't see the need to block this patch for introducing a failure here (exactly the same failure will already exist on other pages), but we should do something about the failing test case. I propose squashing this in: -- >8 -- diff --git a/tests/t0103-log.sh b/tests/t0103-log.sh index bdf1435..2818016 100755 --- a/tests/t0103-log.sh +++ b/tests/t0103-log.sh @@ -17,7 +17,7 @@ test_expect_success 'generate "with%20space/log?qt=grep&q=commit+1"' ' test_expect_success 'find commit 1' 'grep "commit 1" tmp' test_expect_success 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" tmp' test_expect_success 'find link with + in arg' 'grep "/log/?qt=grep&q=commit+1" tmp' -test_expect_success 'no links with space in path' '! grep "href=./with space/" tmp' +test_expect_failure 'no links with space in path' '! grep "href=./with space/" tmp' test_expect_success 'no links with space in arg' '! grep "q=commit 1" tmp' test_expect_success 'commit 2 is not visible' '! grep "commit 2" tmp' -- 8< -- > Changes v6->v7: > * Remove redundant '*' > * Add Reviewed-by > --- > cgitrc.5.txt | 4 +++- > ui-shared.c | 27 ++++++++++++++++++++++++++- > 2 files changed, 29 insertions(+), 2 deletions(-) > > diff --git a/cgitrc.5.txt b/cgitrc.5.txt > index 9fcf445..500b7ee 100644 > --- a/cgitrc.5.txt > +++ b/cgitrc.5.txt > @@ -604,7 +604,9 @@ repo.source-filter:: > > repo.url:: > The relative url used to access the repository. This must be the first > - setting specified for each repo. Default value: none. > + setting specified for each repo. Unless repo.url is different from > + repo.name, cgit splits the repository link in the top of repository > + "summary" view. Default value: none. > > > REPOSITORY-SPECIFIC CGITRC FILE > diff --git a/ui-shared.c b/ui-shared.c > index 2e4fcd9..e4f956d 100644 > --- a/ui-shared.c > +++ b/ui-shared.c > @@ -936,7 +936,32 @@ static void print_header(void) > if (ctx.repo) { > cgit_index_link("index", NULL, NULL, NULL, NULL, 0, 1); > html(" : "); > - cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL); > + > + /* > + * NOTE: If repo.name and repo.url are different, we don't split link as > + * it wouldn't make sense to split the path. > + */ > + if (!strcmp(ctx.repo->name, ctx.repo->url)) { > + char *name = ctx.repo->name; > + char *start = name; > + for (;;) { > + char *delim = strchr(start, '/'); > + if (delim) > + *delim = '\0'; > + > + html_link_open(cgit_repourl(name), NULL, NULL); > + html_ntxt(strlen(start), start); > + html_link_close(); > + > + if (!delim) > + break; > + *delim = '/'; > + html("/"); > + start = delim + 1; > + } > + } else > + cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL); > + > if (ctx.env.authenticated) { > html(""); > html("
\n"); > -- > 2.11.0 > > _______________________________________________ > CGit mailing list > CGit at lists.zx2c4.com > https://lists.zx2c4.com/mailman/listinfo/cgit