Skip to content

add git-bugreport tool #562

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 15 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
/git-bisect--helper
/git-blame
/git-branch
/git-bugreport
/git-bundle
/git-cat-file
/git-check-attr
Expand Down Expand Up @@ -189,7 +190,9 @@
/gitweb/gitweb.cgi
/gitweb/static/gitweb.js
/gitweb/static/gitweb.min.*
/config-list.h
/command-list.h
/bugreport-config-safelist.h
*.tar.gz
*.dsc
*.deb
Expand Down
9 changes: 9 additions & 0 deletions Documentation/asciidoc.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@
#
# Show Git link as: <command>(<section>); if section is defined, else just show
# the command.
#
# The annotate macro does nothing as far as rendering is
# concerned -- we just grep for it in the sources to populate
# things like the bugreport safelist.

[macros]
(?su)[\\]?(?P<name>linkgit):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
(?su)[\\]?(?P<name>annotate):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=

[attributes]
asterisk=&#42;
Expand All @@ -28,6 +33,8 @@ ifdef::backend-docbook[]
{0#<citerefentry>}
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
{0#</citerefentry>}
[annotate-inlinemacro]
{0#}
endif::backend-docbook[]

ifdef::backend-docbook[]
Expand Down Expand Up @@ -94,4 +101,6 @@ ifdef::backend-xhtml11[]
git-relative-html-prefix=
[linkgit-inlinemacro]
<a href="{git-relative-html-prefix}{target}.html">{target}{0?({0})}</a>
[annotate-inlinemacro]
<!-- -->
endif::backend-xhtml11[]
7 changes: 7 additions & 0 deletions Documentation/asciidoctor-extensions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,17 @@ def process document, output
output
end
end

class AnnotateProcessor < Asciidoctor::Extensions::InlineMacroProcessor
def process(parent, target, attrs)
""
end
end
end
end

Asciidoctor::Extensions.register do
inline_macro Git::Documentation::LinkGitProcessor, :linkgit
postprocessor Git::Documentation::DocumentPostProcessor
inline_macro Git::Documentation::AnnotateProcessor, :annotate
end
56 changes: 28 additions & 28 deletions Documentation/config/sendemail.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sendemail.identity::
values in the 'sendemail' section. The default identity is
the value of `sendemail.identity`.

sendemail.smtpEncryption::
sendemail.smtpEncryption annotate:bugreport[include] ::
See linkgit:git-send-email[1] for description. Note that this
setting is not subject to the 'identity' mechanism.

Expand All @@ -15,49 +15,49 @@ sendemail.smtpsslcertpath::
Path to ca-certificates (either a directory or a single file).
Set it to an empty string to disable certificate verification.

sendemail.<identity>.*::
sendemail.<identity>.* annotate:bugreport[exclude] ::
Identity-specific versions of the 'sendemail.*' parameters
found below, taking precedence over those when this
identity is selected, through either the command-line or
`sendemail.identity`.

sendemail.aliasesFile::
sendemail.aliasFileType::
sendemail.annotate::
sendemail.bcc::
sendemail.cc::
sendemail.ccCmd::
sendemail.chainReplyTo::
sendemail.confirm::
sendemail.envelopeSender::
sendemail.from::
sendemail.multiEdit::
sendemail.signedoffbycc::
sendemail.smtpPass::
sendemail.suppresscc::
sendemail.suppressFrom::
sendemail.to::
sendemail.tocmd::
sendemail.smtpDomain::
sendemail.smtpServer::
sendemail.smtpServerPort::
sendemail.smtpServerOption::
sendemail.smtpUser::
sendemail.thread::
sendemail.transferEncoding::
sendemail.validate::
sendemail.xmailer::
sendemail.annotate annotate:bugreport[include] ::
sendemail.bcc annotate:bugreport[include] ::
sendemail.cc annotate:bugreport[include] ::
sendemail.ccCmd annotate:bugreport[include] ::
sendemail.chainReplyTo annotate:bugreport[include] ::
sendemail.confirm annotate:bugreport[include] ::
sendemail.envelopeSender annotate:bugreport[include] ::
sendemail.from annotate:bugreport[include] ::
sendemail.multiEdit annotate:bugreport[include] ::
sendemail.signedoffbycc annotate:bugreport[include] ::
sendemail.smtpPass annotate:bugreport[exclude] ::
sendemail.suppresscc annotate:bugreport[include] ::
sendemail.suppressFrom annotate:bugreport[include] ::
sendemail.to annotate:bugreport[include] ::
sendemail.tocmd annotate:bugreport[include] ::
sendemail.smtpDomain annotate:bugreport[include] ::
sendemail.smtpServer annotate:bugreport[include] ::
sendemail.smtpServerPort annotate:bugreport[include] ::
sendemail.smtpServerOption annotate:bugreport[include] ::
sendemail.smtpUser annotate:bugreport[exclude] ::
sendemail.thread annotate:bugreport[include] ::
sendemail.transferEncoding annotate:bugreport[include] ::
sendemail.validate annotate:bugreport[include] ::
sendemail.xmailer annotate:bugreport[include] ::
See linkgit:git-send-email[1] for description.

sendemail.signedoffcc (deprecated)::
Deprecated alias for `sendemail.signedoffbycc`.

sendemail.smtpBatchSize::
sendemail.smtpBatchSize annotate:bugreport[include] ::
Number of messages to be sent per connection, after that a relogin
will happen. If the value is 0 or undefined, send all messages in
one connection.
See also the `--batch-size` option of linkgit:git-send-email[1].

sendemail.smtpReloginDelay::
sendemail.smtpReloginDelay annotate:bugreport[include] ::
Seconds wait before reconnecting to smtp server.
See also the `--relogin-delay` option of linkgit:git-send-email[1].
60 changes: 60 additions & 0 deletions Documentation/git-bugreport.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
git-bugreport(1)
================

NAME
----
git-bugreport - Collect information for user to file a bug report

SYNOPSIS
--------
[verse]
'git bugreport' [(-o | --output-directory) <path>] [(-s | --suffix) <format>]

DESCRIPTION
-----------
Captures information about the user's machine, Git client, and repository state,
as well as a form requesting information about the behavior the user observed,
into a single text file which the user can then share, for example to the Git
mailing list, in order to report an observed bug.

The following information is requested from the user:

- Reproduction steps
- Expected behavior
- Actual behavior

The following information is captured automatically:

- 'git version --build-options'
- uname sysname, release, version, and machine strings
- Compiler-specific info string
- 'git remote-https --build-info'
- $SHELL
- Selected config values
- A list of enabled hooks
- The number of loose objects in the repository
- The number of packs and packed objects in the repository
- A list of the contents of .git/objects/info (or equivalent)
- The number of valid and invalid alternates

This tool is invoked via the typical Git setup process, which means that in some
cases, it might not be able to launch - for example, if a relevant config file
is unreadable. In this kind of scenario, it may be helpful to manually gather
the kind of information listed above when manually asking for help.

OPTIONS
-------
-o <path>::
--output-directory <path>::
Place the resulting bug report file in `<path>` instead of the root of
the Git repository.

-s <format>::
--suffix <format>::
Specify an alternate suffix for the bugreport name, to create a file
named 'git-bugreport-<formatted suffix>'. This should take the form of a
link:strftime[3] format string; the current local time will be used.

GIT
---
Part of the linkgit:git[1] suite
27 changes: 24 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,7 @@ EXTRA_PROGRAMS =
# ... and all the rest that could be moved out of bindir to gitexecdir
PROGRAMS += $(EXTRA_PROGRAMS)

PROGRAM_OBJS += bugreport.o
PROGRAM_OBJS += credential-store.o
PROGRAM_OBJS += daemon.o
PROGRAM_OBJS += fast-import.o
Expand Down Expand Up @@ -815,7 +816,9 @@ LIB_FILE = libgit.a
XDIFF_LIB = xdiff/lib.a
VCSSVN_LIB = vcs-svn/lib.a

GENERATED_H += config-list.h
GENERATED_H += command-list.h
GENERATED_H += bugreport-config-safelist.h

LIB_H := $(sort $(patsubst ./%,%,$(shell git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null || \
$(FIND) . \
Expand Down Expand Up @@ -2132,7 +2135,9 @@ git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)

help.sp help.s help.o: command-list.h

builtin/help.sp builtin/help.s builtin/help.o: command-list.h GIT-PREFIX
bugreport.sp bugreport.s bugreport.o: bugreport-config-safelist.h

builtin/help.sp builtin/help.s builtin/help.o: config-list.h GIT-PREFIX
builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \
'-DGIT_HTML_PATH="$(htmldir_relative_SQ)"' \
'-DGIT_MAN_PATH="$(mandir_relative_SQ)"' \
Expand All @@ -2152,13 +2157,25 @@ $(BUILT_INS): git$X
ln -s $< $@ 2>/dev/null || \
cp $< $@

config-list.h: generate-configlist.sh

config-list.h:
$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh \
>$@+ && mv $@+ $@

command-list.h: generate-cmdlist.sh command-list.txt

command-list.h: $(wildcard Documentation/git*.txt) Documentation/*config.txt Documentation/config/*.txt
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
command-list.txt >$@+ && mv $@+ $@

bugreport-config-safelist.h: generate-bugreport-config-safelist.sh

bugreport-config-safelist.h: Documentation/config/*.txt
$(QUIET_GEN)$(SHELL_PATH) ./generate-bugreport-config-safelist.sh \
>$@+ && mv $@+ $@

SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
$(gitwebdir_SQ):$(PERL_PATH_SQ):$(SANE_TEXT_GREP):$(PAGER_ENV):\
Expand Down Expand Up @@ -2454,6 +2471,10 @@ endif
git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)

git-bugreport$X: bugreport.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(LIBS)

git-imap-send$X: imap-send.o $(IMAP_SEND_BUILDDEPS) GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(IMAP_SEND_LDFLAGS) $(LIBS)
Expand Down Expand Up @@ -2785,7 +2806,7 @@ $(SP_OBJ): %.sp: %.c GIT-CFLAGS FORCE
.PHONY: sparse $(SP_OBJ)
sparse: $(SP_OBJ)

EXCEPT_HDRS := command-list.h unicode-width.h compat/% xdiff/%
EXCEPT_HDRS := command-list.h config-list.h unicode-width.h compat/% xdiff/%
ifndef GCRYPT_SHA256
EXCEPT_HDRS += sha256/gcrypt.h
endif
Expand All @@ -2807,7 +2828,7 @@ hdr-check: $(HCO)
style:
git clang-format --style file --diff --extensions c,h

check: command-list.h
check: config-list.h command-list.h
@if sparse; \
then \
echo >&2 "Use 'make sparse' instead"; \
Expand Down
Loading