summaryrefslogtreecommitdiffstats
path: root/doc/quilt.1.in
blob: f4b94e66a5a44183d4ab96540e278b3795ba32cd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
.\\" Created by Martin Quinson from the tex documentation
.\\"
.TH quilt 1 "June 2, 2006" "quilt"
 
.SH NAME
quilt \\- tool to manage series of patches

.SH SYNOPSIS
.B quilt
[-h] command [options]

.SH DESCRIPTION
Quilt is a tool to manage large sets of patches by keeping track of the 
changes each patch makes. Patches can be applied, un-applied, refreshed,
etc. The key philosophical concept is that your primary output is patches.

With quilt, all work occurs within a single directory tree. Commands can be
be invoked from anywhere within the source tree. They are of the form
.B quilt cmd
similar to CVS commands. They can be abbreviated as long as the specified
part of the command is unique. All commands print some help text with
.B quilt cmd -h.

Quilt manages a stack of patches. Patches are applied incrementally on top
of the base tree plus all preceding patches. They can be pushed on top of
the stack 
.RB ( "quilt push" ),
and popped off the stack
.RB ( "quilt pop" ).  
Commands are available for querying the contents of the series file 
.RB ( "quilt series" ,
see below), the contents of the stack 
.RB ( "quilt applied" , " quilt previous" , " quilt top" ),
and the patches that are not applied at a particular moment 
.RB ( "quilt next" , " quilt unapplied" ).
By default, most commands apply to the topmost patch on the stack.

Patch files are located in the 
.I patches
sub-directory of the source tree (see EXAMPLE OF WORKING TREE below). The 
.I QUILT_PATCHES
environment variable can be used to override this location. The
.I patches
directory may contain sub-directories. It may also be a symbolic link
instead of a directory. 

A file called
.I series
contains a list of patch file names that defines the order in which patches
are applied. Unless there are means by which series files can be generated
automatically, it is usually provided along with a set of patches. In this
file, each patch file name is on a separate line. Patch files are identified
by pathnames that are relative to the
.I patches
directory; patches may be in sub-directories below this directory. Lines
in the series file that start with a hash character (#) are ignored.
You can also add a comment after each patch file name, introduced by a
space  followed by a hash character. When
quilt adds, removes, or renames patches, it automatically updates the series
file. Users of quilt can modify series files while some patches are
applied, as long as the applied patches remain in their original order.
                                                             
Different series files can be used to assemble patches in different ways,
corresponding for example to different development branches.

Before a patch is applied (or ``pushed on the stack''), copies of all files
the patch modifies are saved to the 
.RI .pc/ patch
directory. The patch is added to the list of currently applied patches
(.pc/applied-patches). Later when a patch is regenerated 
.RB ( "quilt refresh" ),
the backup copies in 
.RI .pc/ patch
are compared with the current versions of the files in the source tree using
GNU diff. 
                                                             
Documentation related to a patch can be put at the beginning of a patch
file.  Quilt is careful to preserve all text that precedes the actual patch
when doing a refresh. (This is limited to patches in unified format; see
.B diff
documentation).

The series file is looked up in the .pc directory, in the root of the source
tree, and in the patches directory.  The first series file that is found is
used. This may also be a symbolic link, or a file with multiple hard links.
Usually, only one series file is used for a set of patches, so the
patches sub-directory is a convenient location.
                                                             
The .pc directory and its sub-directories cannot be relocated, but it can be
a symbolic link. While patches are applied to the source tree, this
directory is essential for many operations, including taking patches off the
stack 
.RB ( "quilt pop" ),
and refreshing patches 
.RB ( "quilt refresh" ).
Files in the .pc directory are automatically removed when they are
no longer needed, so there is no need to clean up manually.

.SH QUILT COMMANDS REFERENCE

@REFERENCE@

.SH COMMON OPTIONS TO ALL COMMANDS

.IP \"\\fB--trace\\fP\" 8

Runs the command in bash trace mode (-x). For internal debugging.

.IP \"\\fB--quiltrc\\fP file\" 8

Use the specified configuration file instead of ~/.quiltrc (or
/etc/quilt.quiltrc if ~/.quiltrc does not exist).  See the pdf
documentation for details about its possible contents.  The
special value \"-\" causes quilt not to read any configuration
file.

.IP \"\\fB--version\\fP\" 8

Print the version number and exit immediately.


.SH EXAMPLE OF WORKING TREE

.fam C
.RS
.nf
work/ -+- ...
       |- patches/ -+- series
       |            |- patch2.diff
       |            |- patch1.diff
       |            +- ...
       +- .pc/ -+- applied-patches
                |- patch1.diff/ -+- ...
                |- patch2.diff/ -+- ...
                +- ...
.fi
.RE
.fam T

.SH EXAMPLE

Please refer to the pdf documentation for an example.

.SH CONFIGURATION FILE

Upon startup, quilt evaluates the file .quiltrc in the user's home
directory, or the file specified with the --quiltrc option.  This file
is a regular bash script. Default options can be passed to any command
by defining a QUILT_COMMAND_ARGS variable.  For example,
QUILT_DIFF_ARGS="--color=auto" causes the output of quilt diff to be
syntax colored when writing to a terminal.

In addition to that, quilt recognizes the following variables:

.IP QUILT_DIFF_OPTS 4

Additional options that quilt shall pass to GNU diff when generating
patches. A useful setting for C source code is "-p", which causes GNU diff
to show in the resulting patch which function a change is in.
    
.IP QUILT_PATCH_OPTS 4

Additional options that quilt shall pass to GNU patch when applying
patches.  For example, some versions of GNU patch support the
"--unified-reject-files" option for generating reject files in unified
diff style.
    
.IP QUILT_DIFFSTAT_OPTS 4

Additional options that quilt shall pass to diffstat when generating
patch statistics. For example, "-f0" can be used for an alternative output
format. Recent versions of diffstat also support alternative rounding
methods ("-r1", "-r2").

.IP QUILT_PATCHES 4

The location of patch files, defaulting to "patches".

.IP QUILT_SERIES 4

The name of the series file, defaulting to "series". Unless an absolute path
is used, the search algorithm described above applies.

.IP QUILT_PATCHES_PREFIX 4

If set to anything, quilt will prefix patch names it prints with their
directory (QUILT_PATCHES).

.IP QUILT_NO_DIFF_INDEX 4

By default, quilt prepends an Index: line to the patches it generates.
If this variable is set to anything, no line is prepended.  This is
a shortcut to adding --no-index to both QUILT_DIFF_ARGS and
QUILT_REFRESH_ARGS.

.IP QUILT_NO_DIFF_TIMESTAMPS 4

By default, quilt includes timestamps in headers when generating patches.
If this variable is set to anything, no timestamp will be included.  This
is a shortcut to adding --no-timestamps to both QUILT_DIFF_ARGS and
QUILT_REFRESH_ARGS.

.IP QUILT_PAGER 4

The pager quilt shall use for commands which produce paginated output. If
unset, the values of GIT_PAGER or PAGER is used.  If none of these variables
is set, "less" is used.  An empty value indicates that no pager should be
used.

.IP EDITOR 4

The program to run to edit files.  If it isn't redefined in the
configuration file, $EDITOR as defined in the environment will be used.

.SH AUTHORS

Quilt started as a series of scripts written by Andrew Morton
(patch-scripts). Based on Andrew's ideas, Andreas Gruenbacher completely
rewrote the scripts, with the help of several other contributors (see
AUTHORS file in the distribution).

This man page was written by Martin Quinson, based on information found in
the pdf documentation, and in the help messages of each commands.

.SH SEE ALSO

The pdf documentation, which should be under /usr/share/doc/quilt/quilt.pdf.
Note that some distributors compress this file. 
.BR zxpdf ( 1 )
can be used to display compressed pdf files.

.BR diff ( 1 ),
.BR patch ( 1 ).