List for cgit developers and users
 help / color / mirror / Atom feed
* [PATCH v8 1/1] ui-shared: allow to split the repository link
@ 2017-03-12 17:00 petr.vorel
  2017-03-12 17:56 ` petr.vorel
  0 siblings, 1 reply; 4+ messages in thread
From: petr.vorel @ 2017-03-12 17:00 UTC (permalink / raw)


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 <petr.vorel at gmail.com>
Cc: "Jason A. Donenfeld" <Jason at zx2c4.com>
Cc: John Keeping <john at keeping.me.uk>
Reviewed-by: John Keeping <john at keeping.me.uk>
---
v7->v8: add missing free().
---
 cgitrc.5.txt |  4 +++-
 ui-shared.c  | 28 +++++++++++++++++++++++++++-
 2 files changed, 30 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..b889260 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -936,7 +936,33 @@ 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;
+			}
+			free(name);
+		} else
+			cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL);
+
 		if (ctx.env.authenticated) {
 			html("</td><td class='form'>");
 			html("<form method='get'>\n");
-- 
2.11.0



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v8 1/1] ui-shared: allow to split the repository link
  2017-03-12 17:00 [PATCH v8 1/1] ui-shared: allow to split the repository link petr.vorel
@ 2017-03-12 17:56 ` petr.vorel
  2017-03-12 18:02   ` john
  0 siblings, 1 reply; 4+ messages in thread
From: petr.vorel @ 2017-03-12 17:56 UTC (permalink / raw)


Hi,

> 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 <petr.vorel at gmail.com>
> Cc: "Jason A. Donenfeld" <Jason at zx2c4.com>
> Cc: John Keeping <john at keeping.me.uk>
> Reviewed-by: John Keeping <john at keeping.me.uk>
> ---
>  cgitrc.5.txt |  4 +++-
>  ui-shared.c  | 28 +++++++++++++++++++++++++++-
>  2 files changed, 30 insertions(+), 2 deletions(-)

> ---
> v7->v8: add missing free().
actually, this breaks even more tests, please use v7.
Patch v7 breaks t0103-log.sh, but v8 breaks even some tests before: t0104-tree.sh.
Failure is in "summary, refs, log, tree, commit, diff" links

John, I suppose free() shouldn't be used. Or am I missing something and I should free
something else?


Kind regards,
Petr


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v8 1/1] ui-shared: allow to split the repository link
  2017-03-12 17:56 ` petr.vorel
@ 2017-03-12 18:02   ` john
  2017-03-12 18:13     ` petr.vorel
  0 siblings, 1 reply; 4+ messages in thread
From: john @ 2017-03-12 18:02 UTC (permalink / raw)


On Sun, Mar 12, 2017 at 06:56:03PM +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 <petr.vorel at gmail.com>
> > Cc: "Jason A. Donenfeld" <Jason at zx2c4.com>
> > Cc: John Keeping <john at keeping.me.uk>
> > Reviewed-by: John Keeping <john at keeping.me.uk>
> > ---
> >  cgitrc.5.txt |  4 +++-
> >  ui-shared.c  | 28 +++++++++++++++++++++++++++-
> >  2 files changed, 30 insertions(+), 2 deletions(-)
> 
> > ---
> > v7->v8: add missing free().
> actually, this breaks even more tests, please use v7.
> Patch v7 breaks t0103-log.sh, but v8 breaks even some tests before: t0104-tree.sh.
> Failure is in "summary, refs, log, tree, commit, diff" links
> 
> John, I suppose free() shouldn't be used. Or am I missing something and I should free
> something else?

It's the return value of cgit_repourl() that needs to be freed, not the
name.  You'll need a new local variable for the result of calling
cgit_repourl() which then needs to be freed in the loop.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v8 1/1] ui-shared: allow to split the repository link
  2017-03-12 18:02   ` john
@ 2017-03-12 18:13     ` petr.vorel
  0 siblings, 0 replies; 4+ messages in thread
From: petr.vorel @ 2017-03-12 18:13 UTC (permalink / raw)


Hi John,

> It's the return value of cgit_repourl() that needs to be freed, not the
> name.  You'll need a new local variable for the result of calling
> cgit_repourl() which then needs to be freed in the loop.
Thanks! Fixed in v9.

I ignored t0103-log.sh test failures you mentioned while commenting v7 as you've already
proposed a fix (thanks!).


Kind regards,
Petr


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-03-12 18:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-12 17:00 [PATCH v8 1/1] ui-shared: allow to split the repository link petr.vorel
2017-03-12 17:56 ` petr.vorel
2017-03-12 18:02   ` john
2017-03-12 18:13     ` petr.vorel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).