1.\"
2.\" This file and its contents are supplied under the terms of the
3.\" Common Development and Distribution License ("CDDL"), version 1.0.
4.\" You may only use this file in accordance with the terms of version
5.\" 1.0 of the CDDL.
6.\"
7.\" A full copy of the text of the CDDL should have accompanied this
8.\" source.  A copy of the CDDL is also available via the Internet at
9.\" http://www.illumos.org/license/CDDL.
10.\"
11.\"
12.\" Copyright 2011 Richard Lowe.
13.\" Copyright 2015 Elysium Digital, L.L.C.
14.\" Copyright 2018 Joyent, Inc.
15.\" Copyright 2024 Bill Sommerfeld <sommerfeld@hamachi.org>
16.\"
17.Dd February 1, 2024
18.Dt GIT-PBCHK 1ONBLD
19.Os
20.Sh NAME
21.Nm git-pbchk ,
22.Nm git-nits
23.Nd nits and pre-putback checks for git
24.Sh SYNOPSIS
25.Nm git-pbchk
26.Fl l
27.Nm git-pbchk
28.Op Fl c Ar check Ns ...
29.Op Fl p Ar branch
30.Nm git-nits
31.Op Fl c Ar check Ns ...
32.Op Fl p Ar branch
33.Op Ar file Ns ...
34.Sh DESCRIPTION
35Check your workspace for common nits and putback-ending mistakes.
36A simple set of checks are run over various parts of your workspace
37and errors encountered are reported, all of which should, generally,
38be fixed.
39.Pp
40As these command names start with
41.Sq git-
42they can also be run by
43.Xr git 1
44as subcommands:
45.Pp
46.Dl $ git pbchk
47.Sh OPTIONS
48.Bl -tag -width 6n
49.It Fl c Ar check
50Run the specific
51.Ar check ,
52as named below.
53In this mode, individual files can be provided to check.
54Multiple
55.Fl c
56options can be supplied, and will run the named checks in the order given on
57the command line.
58.It Fl p Ar branch
59Compare the current workspace to the parent
60.Ar branch
61for the purposes of generating file and comment lists.
62.Pp
63If this option is not specified an attempt is made to determine this
64automatically, if the git branch configuration contains this information.
65.Pp
66If no branch is specified and none can be determined automatically
67.Pa origin/master
68is used.
69.It Fl l
70Print a list of the checks that can be used with
71.Fl c ,
72with a short description of each one.
73.El
74.Sh CHECKS
75.Bl -tag -width 6n
76.It Comment format: Cm comchk
77Check that putback comments follow the prescribed format
78.Pq only run for pbchk .
79.It Copyrights: Cm copyright
80Check that each source file contains a copyright notice for the current
81year\. You don't need to fix this if you, the potential new copyright holder,
82chooses not to
83.It C style: Cm cstyle
84Check that C source files conform to the illumos C style rules
85.It Header check: Cm hdrchk
86Check that C header files conform to the illumos header style rules
87.Pq in addition to the general C rules .
88.It Java style: Cm jstyle
89Check that Java source files conform to the illumos Java style rules
90.Pq which differ from the traditionally recommended Java style .
91.It SCCS Keywords: Cm keywords
92Check that no source files contain unexpanded SCCS keywords.
93It is possible that this check may false positive on certain inputs.
94It is generally obvious when this is the case.
95.Pp
96This check does not check for expanded SCCS keywords, though the common
97.Sq ident Ns
98-style lines should be removed regardless of whether they are
99expanded.
100.It Man page check: Cm manlint
101Check for problems with man pages.
102.It Mapfile check: Cm mapfilechk
103Check that linker mapfiles contain a comment directing anyone editing to
104read the directions in
105.Pa usr/lib/README.mapfiles .
106.It Shell script check: Cm shelllint
107Check for problems with shell scripts.
108.It Package manifest formatting: Cm pkgfmt
109Check package manifests for common errors.
110.It Windows special filename check Cm winnames
111Check for filenames which would prevent you from checking out
112illumos-gate on a Windows system.
113.It Whitespace check: Cm wscheck
114Check for whitespace issues such as mixed tabs/spaces in source files.
115.It Committed symlinks check: Cm symlinks
116Report if there are any symlinks checked into your change; they are
117not allowed by illumos policy.
118.El
119.Sh FILES
120Exception lists can be used to exclude certain files from checks, named after
121the specific check.
122They can be found in
123.Pa $CODEMGR_WS/exception_lists ,
124or optionally under
125.Pa $CODEMGR_WS/.git/info/ ,
126where they must be suffixed
127.Pa .NOT .
128.Sh SEE ALSO
129.Xr git 1
130