source@mandoc.bsd.lv
 help / color / Atom feed
* mandoc: When .Bd, .D1, or .Dl is tagged, attach the permalink to the 
@ 2020-04-19 16:36 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2020-04-19 16:36 UTC (permalink / raw)
  To: source

Log Message:
-----------
When .Bd, .D1, or .Dl is tagged, attach the permalink
to the first few letters, similar to what was earlier done for .Pp.

Modified Files:
--------------
    mandoc:
        tag.c
    mandoc/regress/mdoc/Bd:
        Makefile
        nested.in
        nested.out_ascii
        nested.out_lint
        nested.out_markdown
        nested.out_tag
        paragraph.in
        paragraph.out_ascii
        paragraph.out_html
        paragraph.out_markdown
    mandoc/regress/mdoc/D1:
        spacing.out_html
    mandoc/regress/mdoc/Dl:
        Makefile
        spacing.in
        spacing.out_ascii
        spacing.out_lint
        spacing.out_markdown
        spacing.out_tag
    mandoc/regress/mdoc/Pp:
        arg.out_markdown
    mandoc/regress/mdoc/blank:
        transp.out_markdown

Added Files:
-----------
    mandoc/regress/mdoc/Bd:
        nested.out_html
        spacing.out_tag
    mandoc/regress/mdoc/Dl:
        spacing.out_html

Revision Data
-------------
Index: Makefile
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/Makefile,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lregress/mdoc/Dl/Makefile -Lregress/mdoc/Dl/Makefile -u -p -r1.4 -r1.5
--- regress/mdoc/Dl/Makefile
+++ regress/mdoc/Dl/Makefile
@@ -1,7 +1,8 @@
-# $OpenBSD: Makefile,v 1.5 2020/04/06 09:55:49 schwarze Exp $
+# $OpenBSD: Makefile,v 1.6 2020/04/19 16:26:11 schwarze Exp $
 
 REGRESS_TARGETS	 = spacing
 TAG_TARGETS	 = spacing
 LINT_TARGETS	 = spacing
+HTML_TARGETS	 = spacing
 
 .include <bsd.regress.mk>
Index: spacing.out_lint
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/spacing.out_lint,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lregress/mdoc/Dl/spacing.out_lint -Lregress/mdoc/Dl/spacing.out_lint -u -p -r1.6 -r1.7
--- regress/mdoc/Dl/spacing.out_lint
+++ regress/mdoc/Dl/spacing.out_lint
@@ -1 +1 @@
-mandoc: spacing.in:13:2: WARNING: empty block: Dl
+mandoc: spacing.in:15:2: WARNING: empty block: Dl
Index: spacing.out_ascii
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/spacing.out_ascii,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Dl/spacing.out_ascii -Lregress/mdoc/Dl/spacing.out_ascii -u -p -r1.3 -r1.4
--- regress/mdoc/Dl/spacing.out_ascii
+++ regress/mdoc/Dl/spacing.out_ascii
@@ -4,9 +4,13 @@ N\bNA\bAM\bME\bE
      D\bDl\bl-\b-s\bsp\bpa\bac\bci\bin\bng\bg - spacing in and around one-line literal displays
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     BEGINTEST
+
      preceding text
            spacing in and around one-line literal displays
      empty display:
      following text
+     ENDTEST
+     end of file
 
-OpenBSD                          April 6, 2020                         OpenBSD
+OpenBSD                         April 19, 2020                         OpenBSD
--- /dev/null
+++ regress/mdoc/Dl/spacing.out_html
@@ -0,0 +1,8 @@
+<p class="Pp">preceding text</p>
+<div class="Bd
+  Bd-indent" id="display"><code class="Li"><a class="permalink" href="#display">spacing</a>
+  in and around one-line literal displays</code></div>
+empty display:
+<div class="Bd Bd-indent"><code class="Li"></code></div>
+following text
+<br/>
Index: spacing.in
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/spacing.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Dl/spacing.in -Lregress/mdoc/Dl/spacing.in -u -p -r1.3 -r1.4
--- regress/mdoc/Dl/spacing.in
+++ regress/mdoc/Dl/spacing.in
@@ -1,4 +1,4 @@
-.\" $OpenBSD: spacing.in,v 1.5 2020/04/06 09:55:49 schwarze Exp $
+.\" $OpenBSD: spacing.in,v 1.6 2020/04/19 16:26:11 schwarze Exp $
 .Dd $Mdocdate$
 .Dt DL-SPACING 1
 .Os
@@ -6,9 +6,15 @@
 .Nm Dl-spacing
 .Nd spacing in and around one-line literal displays
 .Sh DESCRIPTION
+BEGINTEST
+.Pp
 preceding text
 .Tg display
 .Dl spacing  in  and around one-line literal displays
 empty display:
 .Dl
 following text
+.br
+ENDTEST
+.br
+end of file
Index: spacing.out_markdown
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/spacing.out_markdown,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Dl/spacing.out_markdown -Lregress/mdoc/Dl/spacing.out_markdown -u -p -r1.3 -r1.4
--- regress/mdoc/Dl/spacing.out_markdown
+++ regress/mdoc/Dl/spacing.out_markdown
@@ -6,12 +6,16 @@ DL-SPACING(1) - General Commands Manual
 
 # DESCRIPTION
 
+BEGINTEST
+
 preceding text
 
 	spacing in and around one-line literal displays
 
 empty display:
 
-following text
+following text  
+ENDTEST  
+end of file
 
-OpenBSD - April 6, 2020
+OpenBSD - April 19, 2020
Index: spacing.out_tag
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Dl/spacing.out_tag,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/mdoc/Dl/spacing.out_tag -Lregress/mdoc/Dl/spacing.out_tag -u -p -r1.1 -r1.2
--- regress/mdoc/Dl/spacing.out_tag
+++ regress/mdoc/Dl/spacing.out_tag
@@ -1,3 +1,3 @@
 NAME 3
 DESCRIPTION 6
-display 8
+display 10
Index: arg.out_markdown
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Pp/arg.out_markdown,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lregress/mdoc/Pp/arg.out_markdown -Lregress/mdoc/Pp/arg.out_markdown -u -p -r1.4 -r1.5
--- regress/mdoc/Pp/arg.out_markdown
+++ regress/mdoc/Pp/arg.out_markdown
@@ -15,8 +15,7 @@ line 3
 
 line 4
 
-final
-text
+final text
 
 ENDTEST
 
Index: tag.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/tag.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -Ltag.c -Ltag.c -u -p -r1.35 -r1.36
--- tag.c
+++ tag.c
@@ -43,6 +43,8 @@ struct tag_entry {
 	char	 s[];
 };
 
+static void		 tag_move_href(struct roff_man *,
+				struct roff_node *, const char *);
 static void		 tag_move_id(struct roff_node *);
 
 static struct ohash	 tag_data;
@@ -254,6 +256,39 @@ tag_move_id(struct roff_node *n)
 }
 
 /*
+ * When a paragraph is tagged and starts with text,
+ * move the permalink to the first few words.
+ */
+static void
+tag_move_href(struct roff_man *man, struct roff_node *n, const char *tag)
+{
+	char	*cp;
+
+	if (n == NULL || n->type != ROFFT_TEXT ||
+	    *n->string == '\0' || *n->string == ' ')
+		return;
+
+	cp = n->string;
+	while (cp != NULL && cp - n->string < 5)
+		cp = strchr(cp + 1, ' ');
+
+	/* If the first text node is longer, split it. */
+
+	if (cp != NULL && cp[1] != '\0') {
+		man->last = n;
+		man->next = ROFF_NEXT_SIBLING;
+		roff_word_alloc(man, n->line,
+		    n->pos + (cp - n->string), cp + 1);
+		man->last->flags = n->flags & ~NODE_LINE;
+		*cp = '\0';
+	}
+
+	assert(n->tag == NULL);
+	n->tag = mandoc_strdup(tag);
+	n->flags |= NODE_HREF;
+}
+
+/*
  * When all tags have been set, decide where to put
  * the associated permalinks, and maybe move some tags
  * to the beginning of the respective paragraphs.
@@ -261,34 +296,16 @@ tag_move_id(struct roff_node *n)
 void
 tag_postprocess(struct roff_man *man, struct roff_node *n)
 {
-	struct roff_node	*nn;
-	char			*cp;
-
 	if (n->flags & NODE_ID) {
 		switch (n->tok) {
 		case MDOC_Pp:
-			nn = n->next;
-			if (nn == NULL || nn->type != ROFFT_TEXT ||
-			    *nn->string == '\0' || *nn->string == ' ')
-				break;
-			/* Use the first few letters for the permalink. */
-			cp = nn->string;
-			while (cp != NULL && cp - nn->string < 5)
-				cp = strchr(cp + 1, ' ');
-			if (cp != NULL && cp[1] != '\0') {
-				/* Split a longer text node. */
-				man->last = nn;
-				man->next = ROFF_NEXT_SIBLING;
-				roff_word_alloc(man, nn->line,
-				    nn->pos + (cp - nn->string), cp + 1);
-				man->last->flags = nn->flags;
-				*cp = '\0';
-			}
-			assert(nn->tag == NULL);
-			nn->tag = mandoc_strdup(n->tag);
-			nn->flags |= NODE_HREF;
+			tag_move_href(man, n->next, n->tag);
 			break;
 		case MDOC_Bd:
+		case MDOC_D1:
+		case MDOC_Dl:
+			tag_move_href(man, n->child, n->tag);
+			break;
 		case MDOC_Bl:
 			/* XXX No permalink for now. */
 			break;
--- /dev/null
+++ regress/mdoc/Bd/nested.out_html
@@ -0,0 +1,28 @@
+<p class="Pp">regular text</p>
+<div class="Bd Pp
+  Bd-indent" id="outer"><a class="permalink" href="#outer">outer</a> text
+  (default indent)
+<div class="Bd Pp
+  Bd-indent" id="inner"><a class="permalink" href="#inner">inner</a> text
+  (default indent)</div>
+outer text</div>
+regular text
+<div class="Bd Pp
+  Bd-indent" id="outer_2"><a class="permalink" href="#outer_2">outer</a> text
+  (4n)
+<div class="Bd Pp
+  Bd-indent" id="inner_2"><a class="permalink" href="#inner_2">inner</a> text
+  (2n)</div>
+outer text
+<dl class="Bl-tag">
+  <dt>tag</dt>
+  <dd>text</dd>
+</dl>
+outer text</div>
+regular text
+<dl class="Bl-tag">
+  <dt>tag</dt>
+  <dd>outer text
+    <div class="Bd Pp Bd-indent">inner text (2n)</div>
+    outer text</dd>
+</dl>
Index: paragraph.out_html
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/paragraph.out_html,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lregress/mdoc/Bd/paragraph.out_html -Lregress/mdoc/Bd/paragraph.out_html -u -p -r1.4 -r1.5
--- regress/mdoc/Bd/paragraph.out_html
+++ regress/mdoc/Bd/paragraph.out_html
@@ -1,6 +1,7 @@
 <p class="Pp" id="npara"><a class="permalink" href="#npara">normal</a>
   paragraph</p>
-<div class="Bd Pp" id="filled">filled display
+<div class="Bd Pp" id="filled"><a class="permalink" href="#filled">filled</a>
+  display
 <p class="Pp" id="fpara"><a class="permalink" href="#fpara">paragraph</a> in
     display</p>
 </div>
@@ -8,10 +9,10 @@ back to normal
 <p class="Pp">another paragraph</p>
 <div class="Bd Pp" id="unfilled">
 <pre>
-unfilled
+<a class="permalink" href="#unfilled">unfilled</a> literal
 display
 <mark id="upara"></mark>
-<a class="permalink" href="#upara">unfilled</a>
+<a class="permalink" href="#upara">unfilled</a> literal
 paragraph
 </pre>
 </div>
Index: paragraph.out_ascii
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/paragraph.out_ascii,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/mdoc/Bd/paragraph.out_ascii -Lregress/mdoc/Bd/paragraph.out_ascii -u -p -r1.2 -r1.3
--- regress/mdoc/Bd/paragraph.out_ascii
+++ regress/mdoc/Bd/paragraph.out_ascii
@@ -15,13 +15,13 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      another paragraph
 
-     unfilled
+     unfilled literal
      display
 
-     unfilled
+     unfilled literal
      paragraph
      again back to normal
      ENDTEST
      end of file
 
-OpenBSD                          April 6, 2020                         OpenBSD
+OpenBSD                         April 19, 2020                         OpenBSD
Index: nested.in
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/nested.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Bd/nested.in -Lregress/mdoc/Bd/nested.in -u -p -r1.3 -r1.4
--- regress/mdoc/Bd/nested.in
+++ regress/mdoc/Bd/nested.in
@@ -1,4 +1,4 @@
-.\" $OpenBSD: nested.in,v 1.3 2020/04/06 09:55:49 schwarze Exp $
+.\" $OpenBSD: nested.in,v 1.4 2020/04/19 16:26:11 schwarze Exp $
 .Dd $Mdocdate$
 .Dt BD-NESTED 1
 .Os
@@ -6,16 +6,18 @@
 .Nm Bd-nested
 .Nd nested displays and lists
 .Sh DESCRIPTION
+BEGINTEST
+.Pp
 regular
 text
 .Tg outer
 .Bd -ragged -offset indent
-outer
-text (default indent)
+outer text
+.Pq default indent
 .Tg inner
 .Bd -ragged -offset indent
-inner
-text (default indent)
+inner text
+.Pq default indent
 .Ed
 outer
 text
@@ -45,3 +47,4 @@ inner text (2n)
 .Ed
 outer text
 .El
+ENDTEST
Index: nested.out_markdown
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/nested.out_markdown,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Bd/nested.out_markdown -Lregress/mdoc/Bd/nested.out_markdown -u -p -r1.3 -r1.4
--- regress/mdoc/Bd/nested.out_markdown
+++ regress/mdoc/Bd/nested.out_markdown
@@ -6,14 +6,16 @@ BD-NESTED(1) - General Commands Manual
 
 # DESCRIPTION
 
+BEGINTEST
+
 regular
 text
 
-> outer
-> text (default indent)
+> outer text
+> (default indent)
 
-> > inner
-> > text (default indent)
+> > inner text
+> > (default indent)
 
 > outer
 > text
@@ -43,4 +45,6 @@ tag
 
 > outer text
 
-OpenBSD - April 6, 2020
+ENDTEST
+
+OpenBSD - April 19, 2020
Index: Makefile
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/Makefile,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lregress/mdoc/Bd/Makefile -Lregress/mdoc/Bd/Makefile -u -p -r1.6 -r1.7
--- regress/mdoc/Bd/Makefile
+++ regress/mdoc/Bd/Makefile
@@ -1,12 +1,12 @@
-# $OpenBSD: Makefile,v 1.23 2020/04/06 09:55:49 schwarze Exp $
+# $OpenBSD: Makefile,v 1.24 2020/04/19 16:26:11 schwarze Exp $
 
 REGRESS_TARGETS	 = beforeNAME blank centered nested nf paragraph spacing
 REGRESS_TARGETS	+= badargs empty offset-empty offset-neg
 REGRESS_TARGETS	+= break broken unclosed
 
-TAG_TARGETS	 = nested paragraph
+TAG_TARGETS	 = nested paragraph spacing
 LINT_TARGETS	 = beforeNAME blank nested badargs break broken unclosed
-HTML_TARGETS	 = nf paragraph
+HTML_TARGETS	 = nested nf paragraph
 
 SKIP_TMAN	 = beforeNAME centered
 
Index: nested.out_lint
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/nested.out_lint,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lregress/mdoc/Bd/nested.out_lint -Lregress/mdoc/Bd/nested.out_lint -u -p -r1.6 -r1.7
--- regress/mdoc/Bd/nested.out_lint
+++ regress/mdoc/Bd/nested.out_lint
@@ -1,2 +1,2 @@
-mandoc: nested.in:16:2: WARNING: nested displays are not portable: Bd in Bd
-mandoc: nested.in:29:2: WARNING: nested displays are not portable: Bd in Bd
+mandoc: nested.in:18:2: WARNING: nested displays are not portable: Bd in Bd
+mandoc: nested.in:31:2: WARNING: nested displays are not portable: Bd in Bd
Index: nested.out_ascii
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/nested.out_ascii,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/Bd/nested.out_ascii -Lregress/mdoc/Bd/nested.out_ascii -u -p -r1.3 -r1.4
--- regress/mdoc/Bd/nested.out_ascii
+++ regress/mdoc/Bd/nested.out_ascii
@@ -4,6 +4,8 @@ N\bNA\bAM\bME\bE
      B\bBd\bd-\b-n\bne\bes\bst\bte\bed\bd - nested displays and lists
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     BEGINTEST
+
      regular text
 
            outer text (default indent)
@@ -25,5 +27,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
                inner text (2n)
              outer text
+     ENDTEST
 
-OpenBSD                          April 6, 2020                         OpenBSD
+OpenBSD                         April 19, 2020                         OpenBSD
--- /dev/null
+++ regress/mdoc/Bd/spacing.out_tag
@@ -0,0 +1,4 @@
+NAME 3
+DESCRIPTION 6
+EXAMPLES 14
+word 15
Index: nested.out_tag
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/nested.out_tag,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/mdoc/Bd/nested.out_tag -Lregress/mdoc/Bd/nested.out_tag -u -p -r1.1 -r1.2
--- regress/mdoc/Bd/nested.out_tag
+++ regress/mdoc/Bd/nested.out_tag
@@ -1,6 +1,6 @@
 NAME 3
 DESCRIPTION 6
-outer 9
-inner 11
-outer 15
-inner 17
+outer 11
+inner 13
+outer 17
+inner 19
Index: paragraph.in
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/paragraph.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/mdoc/Bd/paragraph.in -Lregress/mdoc/Bd/paragraph.in -u -p -r1.2 -r1.3
--- regress/mdoc/Bd/paragraph.in
+++ regress/mdoc/Bd/paragraph.in
@@ -1,4 +1,4 @@
-.\" $OpenBSD: paragraph.in,v 1.2 2020/04/06 09:55:49 schwarze Exp $
+.\" $OpenBSD: paragraph.in,v 1.3 2020/04/19 16:26:11 schwarze Exp $
 .Dd $Mdocdate$
 .Dt BD-PARAGRAPH 1
 .Os
@@ -28,12 +28,12 @@ to normal
 another
 paragraph
 .Tg unfilled
-.Bd -unfilled
-unfilled
+.Bd -literal
+unfilled literal
 display
 .Tg upara
 .Pp
-unfilled
+unfilled literal
 paragraph
 .Ed
 again back
Index: paragraph.out_markdown
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Bd/paragraph.out_markdown,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/mdoc/Bd/paragraph.out_markdown -Lregress/mdoc/Bd/paragraph.out_markdown -u -p -r1.2 -r1.3
--- regress/mdoc/Bd/paragraph.out_markdown
+++ regress/mdoc/Bd/paragraph.out_markdown
@@ -25,10 +25,10 @@ to normal
 another
 paragraph
 
-	unfilled
+	unfilled literal
 	display
 
-	unfilled
+	unfilled literal
 	paragraph
 
 again back
@@ -36,4 +36,4 @@ to normal  
 ENDTEST  
 end of file
 
-OpenBSD - April 6, 2020
+OpenBSD - April 19, 2020
Index: spacing.out_html
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/D1/spacing.out_html,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lregress/mdoc/D1/spacing.out_html -Lregress/mdoc/D1/spacing.out_html -u -p -r1.3 -r1.4
--- regress/mdoc/D1/spacing.out_html
+++ regress/mdoc/D1/spacing.out_html
@@ -1,7 +1,7 @@
 <p class="Pp">preceding paragraph</p>
 <div class="Bd
-  Bd-indent" id="display"><a class="permalink" href="#display">spacing in and
-  around one-line displays</a></div>
+  Bd-indent" id="display"><a class="permalink" href="#display">spacing</a> in
+  and around one-line displays</div>
 empty display:
 <div class="Bd Bd-indent"></div>
 following text
Index: transp.out_markdown
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/blank/transp.out_markdown,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/mdoc/blank/transp.out_markdown -Lregress/mdoc/blank/transp.out_markdown -u -p -r1.2 -r1.3
--- regress/mdoc/blank/transp.out_markdown
+++ regress/mdoc/blank/transp.out_markdown
@@ -23,8 +23,7 @@ Pp sp 2v:
 
 sp Pp:
 
-Double
-sp:
+Double sp:
 
 br blank:
 
--
 To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, back to index

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-19 16:36 mandoc: When .Bd, .D1, or .Dl is tagged, attach the permalink to the schwarze

source@mandoc.bsd.lv

Archives are clonable: git clone --mirror http://inbox.vuxu.org/mandoc-source

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.mandoc.source


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git