All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS
@ 2021-09-08  5:13 Colin Curtis
  2021-09-08  5:13 ` [PATCH 1/2] add cmd_gud to open git-scm.com webpage Colin Curtis
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Colin Curtis @ 2021-09-08  5:13 UTC (permalink / raw)
  To: git; +Cc: Colin Curtis

From: Colin Curtis <colinpcurtis@gmail.com>

The gud command opens the Pro Git book webpage in the default
web browser.  The reason to add this command is due to the
play on words when saying 'git gud', which sounds like 'get good'.
Hence this command when invoked will open up the Pro Git 
webpage to allow the user to 'get good' at git.

We also fix a bug in the Makefile when running on Mac OS, namely
the libiconv path when using a brew install for the library.  Previously
the developer would have to manually change the path to the library when
developing on Mac OS.

Colin Curtis (2):
  add cmd_gud to open git-scm.com webpage
  add liconv link for makefile

 .gitignore                |  1 +
 Documentation/git-gud.txt | 33 +++++++++++++++++++++++++++++++++
 Makefile                  |  9 +++++++--
 builtin.h                 |  1 +
 builtin/gud.c             | 27 +++++++++++++++++++++++++++
 git.c                     |  1 +
 t/t9904-git-gud.sh        | 16 ++++++++++++++++
 7 files changed, 86 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/git-gud.txt
 create mode 100644 builtin/gud.c
 create mode 100755 t/t9904-git-gud.sh

-- 
2.30.1 (Apple Git-130)


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

* [PATCH 1/2] add cmd_gud to open git-scm.com webpage
  2021-09-08  5:13 [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Colin Curtis
@ 2021-09-08  5:13 ` Colin Curtis
  2021-09-08  5:13 ` [PATCH 2/2] add liconv link for makefile Colin Curtis
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Colin Curtis @ 2021-09-08  5:13 UTC (permalink / raw)
  To: git; +Cc: Colin Curtis

From: Colin Curtis <colinpcurtis@gmail.com>

---
 .gitignore                |  1 +
 Documentation/git-gud.txt | 33 +++++++++++++++++++++++++++++++++
 Makefile                  |  3 ++-
 builtin.h                 |  1 +
 builtin/gud.c             | 27 +++++++++++++++++++++++++++
 git.c                     |  1 +
 t/t9904-git-gud.sh        | 16 ++++++++++++++++
 7 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/git-gud.txt
 create mode 100644 builtin/gud.c
 create mode 100755 t/t9904-git-gud.sh

diff --git a/.gitignore b/.gitignore
index 311841f9be..5fec146bd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,6 +75,7 @@
 /git-gc
 /git-get-tar-commit-id
 /git-grep
+/git-gud
 /git-hash-object
 /git-help
 /git-http-backend
diff --git a/Documentation/git-gud.txt b/Documentation/git-gud.txt
new file mode 100644
index 0000000000..357ff915a6
--- /dev/null
+++ b/Documentation/git-gud.txt
@@ -0,0 +1,33 @@
+git-gud(1)
+===========
+
+NAME
+----
+git-gud - Display git-scm.com website
+
+SYNOPSIS
+--------
+[verse]
+'git gud' [-d | --display] [<pathspec>...]
+
+DESCRIPTION
+-----------
+
+'git gud' command opens the webpage for git-scm.com in the default
+web browser.
+
+OPTIONS
+-------
+-d::
+--display::
+	Opens the webpage for git-scm.com in the default browser
+
+OUTPUT
+------
+If the '[-d | --display]' option is present, then the command opens
+up the git-scm.com webpage in the default web browser.  Otherwise,
+nothing is done.
+
+GIT
+---
+Part of the linkgit:git[1] suite
diff --git a/Makefile b/Makefile
index 429c276058..379cd91a97 100644
--- a/Makefile
+++ b/Makefile
@@ -1108,6 +1108,7 @@ BUILTIN_OBJS += builtin/fsck.o
 BUILTIN_OBJS += builtin/gc.o
 BUILTIN_OBJS += builtin/get-tar-commit-id.o
 BUILTIN_OBJS += builtin/grep.o
+BUILTIN_OBJS += builtin/gud.o
 BUILTIN_OBJS += builtin/hash-object.o
 BUILTIN_OBJS += builtin/help.o
 BUILTIN_OBJS += builtin/index-pack.o
@@ -1513,7 +1514,7 @@ ifndef NO_ICONV
 		ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
 			ICONV_LINK += -lintl
 		endif
-		EXTLIBS += $(ICONV_LINK) -liconv
+		EXTLIBS += $(ICONV_LINK) /usr/local/Cellar/libiconv/1.16/lib/libiconv.dylib # -liconv
 	endif
 endif
 ifdef ICONV_OMITS_BOM
diff --git a/builtin.h b/builtin.h
index 16ecd5586f..e183a1a8d4 100644
--- a/builtin.h
+++ b/builtin.h
@@ -162,6 +162,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix);
 int cmd_gc(int argc, const char **argv, const char *prefix);
 int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix);
 int cmd_grep(int argc, const char **argv, const char *prefix);
+int cmd_gud(int argc, const char **argv, const char *prefix);
 int cmd_hash_object(int argc, const char **argv, const char *prefix);
 int cmd_help(int argc, const char **argv, const char *prefix);
 int cmd_index_pack(int argc, const char **argv, const char *prefix);
diff --git a/builtin/gud.c b/builtin/gud.c
new file mode 100644
index 0000000000..04808a08f5
--- /dev/null
+++ b/builtin/gud.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include "builtin.h"
+#include "parse-options.h"
+
+static int display_page;
+
+static const char * const builtin_gud_usage[] = {
+	N_("git gud [<options>]"),
+	NULL
+};
+
+static struct option builtin_gud_options[] = {
+        OPT_BOOL('d', "display", &display_page, N_("display the webpage for git-scm.com")),
+		OPT_END()
+};
+
+int cmd_gud(int argc, const char **argv, const char *prefix)
+{    
+
+    argc = parse_options(argc, argv, prefix,
+                builtin_gud_options, builtin_gud_usage, 0);
+    if (display_page) {
+        system("open https://git-scm.com/book/en/v2");
+    }
+    
+    return 0;
+}
\ No newline at end of file
diff --git a/git.c b/git.c
index 18bed9a996..2da1f4d2d4 100644
--- a/git.c
+++ b/git.c
@@ -536,6 +536,7 @@ static struct cmd_struct commands[] = {
 	{ "gc", cmd_gc, RUN_SETUP },
 	{ "get-tar-commit-id", cmd_get_tar_commit_id, NO_PARSEOPT },
 	{ "grep", cmd_grep, RUN_SETUP_GENTLY },
+	{ "gud", cmd_gud, RUN_SETUP },
 	{ "hash-object", cmd_hash_object },
 	{ "help", cmd_help },
 	{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
diff --git a/t/t9904-git-gud.sh b/t/t9904-git-gud.sh
new file mode 100755
index 0000000000..47fa97498c
--- /dev/null
+++ b/t/t9904-git-gud.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+test_description='git-gud test
+
+This test runs git-gud and makes sure it does not crash.'
+
+. ./test-lib.sh
+
+test_expect_success 'runs correctly with no args' '
+	git gud
+'
+
+test_expect_success 'runs correctly with -d option' '
+	git gud -d
+'
+
+test_done
-- 
2.30.1 (Apple Git-130)


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

* [PATCH 2/2] add liconv link for makefile
  2021-09-08  5:13 [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Colin Curtis
  2021-09-08  5:13 ` [PATCH 1/2] add cmd_gud to open git-scm.com webpage Colin Curtis
@ 2021-09-08  5:13 ` Colin Curtis
  2021-09-08  5:52   ` Carlo Arenas
  2021-09-08  6:01 ` [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Bagas Sanjaya
  2021-09-08 10:50 ` Ævar Arnfjörð Bjarmason
  3 siblings, 1 reply; 6+ messages in thread
From: Colin Curtis @ 2021-09-08  5:13 UTC (permalink / raw)
  To: git; +Cc: Colin Curtis

From: Colin Curtis <colinpcurtis@gmail.com>

---
 Makefile      | 8 ++++++--
 builtin/gud.c | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 379cd91a97..e1679cca47 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 # The default target of this Makefile is...
 all::
-
+OS := $(shell uname)
 # Define V=1 to have a more verbose compile.
 #
 # Define SHELL_PATH to a POSIX shell if your /bin/sh is broken.
@@ -1514,7 +1514,11 @@ ifndef NO_ICONV
 		ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
 			ICONV_LINK += -lintl
 		endif
-		EXTLIBS += $(ICONV_LINK) /usr/local/Cellar/libiconv/1.16/lib/libiconv.dylib # -liconv
+		ifeq ($(OS),Darwin)
+			EXTLIBS += $(ICONV_LINK) /usr/local/Cellar/libiconv/1.16/lib/libiconv.dylib
+		else
+			EXTLIBS += $(ICONV_LINK) -liconv
+		endif
 	endif
 endif
 ifdef ICONV_OMITS_BOM
diff --git a/builtin/gud.c b/builtin/gud.c
index 04808a08f5..9a5a1e71ac 100644
--- a/builtin/gud.c
+++ b/builtin/gud.c
@@ -24,4 +24,4 @@ int cmd_gud(int argc, const char **argv, const char *prefix)
     }
     
     return 0;
-}
\ No newline at end of file
+}
-- 
2.30.1 (Apple Git-130)


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

* Re: [PATCH 2/2] add liconv link for makefile
  2021-09-08  5:13 ` [PATCH 2/2] add liconv link for makefile Colin Curtis
@ 2021-09-08  5:52   ` Carlo Arenas
  0 siblings, 0 replies; 6+ messages in thread
From: Carlo Arenas @ 2021-09-08  5:52 UTC (permalink / raw)
  To: Colin Curtis; +Cc: git

On Tue, Sep 7, 2021 at 10:18 PM Colin Curtis <colinpcurtis@gmail.com> wrote:
>
> diff --git a/Makefile b/Makefile
> index 379cd91a97..e1679cca47 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,6 +1,6 @@
>  # The default target of this Makefile is...
>  all::
> -
> +OS := $(shell uname)

There is no need for this, the section of code you modify below is
already macOS (indeed, even to the point that it won't trigger in a
Linux user using brew, or even a macOS user that has macports)
specific

>  # Define V=1 to have a more verbose compile.
>  #
>  # Define SHELL_PATH to a POSIX shell if your /bin/sh is broken.
> @@ -1514,7 +1514,11 @@ ifndef NO_ICONV
>                 ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
>                         ICONV_LINK += -lintl
>                 endif
> -               EXTLIBS += $(ICONV_LINK) /usr/local/Cellar/libiconv/1.16/lib/libiconv.dylib # -liconv
> +               ifeq ($(OS),Darwin)
> +                       EXTLIBS += $(ICONV_LINK) /usr/local/Cellar/libiconv/1.16/lib/libiconv.dylib
> +               else
> +                       EXTLIBS += $(ICONV_LINK) -liconv
> +               endif

Why is it not built with the libiconv library that is provided by the system?

$ otool -L git
git:
        /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
(compatibility version 1.0.0, current version 1122.33.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current
version 1.2.11)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0,
current version 7.0.0)
        /usr/local/opt/gettext/lib/libintl.8.dylib (compatibility
version 11.0.0, current version 11.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
current version 1292.100.5)
        /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
(compatibility version 150.0.0, current version 1775.118.101)

AFAIK there is a good reason why brew doesn't link that automatically,
and using the headers of one with the binary of the other is likely to
cause serious problems.

Carlo

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

* Re: [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS
  2021-09-08  5:13 [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Colin Curtis
  2021-09-08  5:13 ` [PATCH 1/2] add cmd_gud to open git-scm.com webpage Colin Curtis
  2021-09-08  5:13 ` [PATCH 2/2] add liconv link for makefile Colin Curtis
@ 2021-09-08  6:01 ` Bagas Sanjaya
  2021-09-08 10:50 ` Ævar Arnfjörð Bjarmason
  3 siblings, 0 replies; 6+ messages in thread
From: Bagas Sanjaya @ 2021-09-08  6:01 UTC (permalink / raw)
  To: Colin Curtis, git

On 08/09/21 12.13, Colin Curtis wrote:
> From: Colin Curtis <colinpcurtis@gmail.com>
> 
> The gud command opens the Pro Git book webpage in the default
> web browser.  The reason to add this command is due to the
> play on words when saying 'git gud', which sounds like 'get good'.
> Hence this command when invoked will open up the Pro Git
> webpage to allow the user to 'get good' at git.
> 
> We also fix a bug in the Makefile when running on Mac OS, namely
> the libiconv path when using a brew install for the library.  Previously
> the developer would have to manually change the path to the library when
> developing on Mac OS.
> 

Two distinct topics in one patch series. Why don't you create separate 
patch series for each topic?

For `git gud`, I think there's no point on adding such easter egg, since 
users can simply access git-scm.com with their browser, without needing 
specialized command just to invoke it.

-- 
An old man doll... just what I always wanted! - Clara

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

* Re: [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS
  2021-09-08  5:13 [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Colin Curtis
                   ` (2 preceding siblings ...)
  2021-09-08  6:01 ` [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Bagas Sanjaya
@ 2021-09-08 10:50 ` Ævar Arnfjörð Bjarmason
  3 siblings, 0 replies; 6+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-09-08 10:50 UTC (permalink / raw)
  To: Colin Curtis; +Cc: git


On Tue, Sep 07 2021, Colin Curtis wrote:

> From: Colin Curtis <colinpcurtis@gmail.com>
>
> The gud command opens the Pro Git book webpage in the default
> web browser.  The reason to add this command is due to the
> play on words when saying 'git gud', which sounds like 'get good'.
> Hence this command when invoked will open up the Pro Git 
> webpage to allow the user to 'get good' at git.

Purely in terms of implementation if we had this sort of thing it really
would belong in "git help", not in an overly cleverly named new
built-in.

More generally we don't link to git-scm.org now for anything
significant, AFAICT the only things we do link to are to our own
generated documentation.

[Not with my Git PLC hat on, in case anyone's wondering]

I don't think we should be further endorsing proprietary documentation
in liue of improving the free docs in git.git itself.

If this command (whether via "git help" or not) linked to anything it
should be to our own https://git-scm.com/docs/user-manual; if there's
things lacking there let's try to improve the freely available docs.

And purely in terms of UX once we had such freely available docs we
should not be opening a webpage to display them, but linking to a
manpage etc. Perhaps we should be opening a webpage, and indeed "git
help" can do that for you, but that should be to docs we have built
locally & are guaranteed to apply to the git version you're working
with.

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

end of thread, other threads:[~2021-09-08 10:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-08  5:13 [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Colin Curtis
2021-09-08  5:13 ` [PATCH 1/2] add cmd_gud to open git-scm.com webpage Colin Curtis
2021-09-08  5:13 ` [PATCH 2/2] add liconv link for makefile Colin Curtis
2021-09-08  5:52   ` Carlo Arenas
2021-09-08  6:01 ` [PATCH 0/2] Add cmd_gud and detect libiconv path for Mac OS Bagas Sanjaya
2021-09-08 10:50 ` Ævar Arnfjörð Bjarmason

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.