1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"application/xhtml+xml; charset=UTF-8" />
6 <meta name=
"generator" content=
"AsciiDoc 8.6.8" />
7 <title>guilt(
7)
</title>
8 <style type=
"text/css">
9 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
13 font-family: Georgia
,serif
;
17 h1
, h2
, h3
, h4
, h5
, h6
,
18 div
.title
, caption
.title
,
19 thead
, p
.table
.header
,
21 #author, #revnumber
, #revdate
, #revremark
,
23 font-family: Arial
,Helvetica
,sans-serif
;
27 margin: 1em 5% 1em 5%;
32 text-decoration: underline
;
48 h1
, h2
, h3
, h4
, h5
, h6
{
56 border-bottom: 2px solid silver
;
76 border: 1px solid silver
;
87 ul
> li
{ color: #aaa; }
88 ul
> li
> * { color: black
; }
90 .monospaced, code, pre {
91 font-family: "Courier New", Courier
, monospace
;
106 #revnumber, #revdate
, #revremark
{
111 border-top: 2px solid silver
;
117 padding-bottom: 0.5em;
121 padding-bottom: 0.5em;
126 margin-bottom: 1.5em;
128 div
.imageblock
, div
.exampleblock
, div
.verseblock
,
129 div
.quoteblock
, div
.literalblock
, div
.listingblock
, div
.sidebarblock
,
130 div
.admonitionblock
{
132 margin-bottom: 1.5em;
134 div
.admonitionblock
{
136 margin-bottom: 2.0em;
141 div
.content
{ /* Block element content. */
145 /* Block element titles. */
146 div
.title
, caption
.title
{
151 margin-bottom: 0.5em;
157 td div
.title:first-child
{
160 div
.content div
.title:first-child
{
163 div
.content
+ div
.title
{
167 div
.sidebarblock
> div
.content
{
169 border: 1px solid
#dddddd;
170 border-left: 4px solid
#f0f0f0;
174 div
.listingblock
> div
.content
{
175 border: 1px solid
#dddddd;
176 border-left: 5px solid
#f0f0f0;
181 div
.quoteblock
, div
.verseblock
{
185 border-left: 5px solid
#f0f0f0;
189 div
.quoteblock
> div
.attribution
{
194 div
.verseblock
> pre
.content
{
195 font-family: inherit
;
198 div
.verseblock
> div
.attribution
{
202 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
203 div
.verseblock
+ div
.attribution
{
207 div
.admonitionblock
.icon
{
211 text-decoration: underline
;
213 padding-right: 0.5em;
215 div
.admonitionblock td
.content
{
217 border-left: 3px solid
#dddddd;
220 div
.exampleblock
> div
.content
{
221 border-left: 3px solid
#dddddd;
225 div
.imageblock div
.content
{ padding-left: 0; }
226 span
.image img
{ border-style: none
; }
227 a
.image:visited
{ color: white
; }
231 margin-bottom: 0.8em;
244 list-style-position: outside
;
247 list-style-type: decimal
;
250 list-style-type: lower-alpha
;
253 list-style-type: upper-alpha
;
256 list-style-type: lower-roman
;
259 list-style-type: upper-roman
;
262 div
.compact ul
, div
.compact ol
,
263 div
.compact p
, div
.compact p
,
264 div
.compact div
, div
.compact div
{
266 margin-bottom: 0.1em;
278 margin-bottom: 0.8em;
281 padding-bottom: 15px;
283 dt
.hdlist1
.strong
, td
.hdlist1
.strong
{
289 padding-right: 0.8em;
295 div
.hdlist
.compact tr
{
304 .footnote, .footnoteref {
308 span
.footnote
, span
.footnoteref
{
309 vertical-align: super
;
313 margin: 20px 0 20px 0;
317 #footnotes div
.footnote
{
323 border-top: 1px solid silver
;
332 padding-right: 0.5em;
333 padding-bottom: 0.3em;
341 #footer-badges { display: none
; }
345 margin-bottom: 2.5em;
353 margin-bottom: 0.1em;
356 div
.toclevel0
, div
.toclevel1
, div
.toclevel2
, div
.toclevel3
, div
.toclevel4
{
373 span
.aqua
{ color: aqua
; }
374 span
.black
{ color: black
; }
375 span
.blue
{ color: blue
; }
376 span
.fuchsia
{ color: fuchsia
; }
377 span
.gray
{ color: gray
; }
378 span
.green
{ color: green
; }
379 span
.lime
{ color: lime
; }
380 span
.maroon
{ color: maroon
; }
381 span
.navy
{ color: navy
; }
382 span
.olive
{ color: olive
; }
383 span
.purple
{ color: purple
; }
384 span
.red
{ color: red
; }
385 span
.silver
{ color: silver
; }
386 span
.teal
{ color: teal
; }
387 span
.white
{ color: white
; }
388 span
.yellow
{ color: yellow
; }
390 span
.aqua-background
{ background: aqua
; }
391 span
.black-background
{ background: black
; }
392 span
.blue-background
{ background: blue
; }
393 span
.fuchsia-background
{ background: fuchsia
; }
394 span
.gray-background
{ background: gray
; }
395 span
.green-background
{ background: green
; }
396 span
.lime-background
{ background: lime
; }
397 span
.maroon-background
{ background: maroon
; }
398 span
.navy-background
{ background: navy
; }
399 span
.olive-background
{ background: olive
; }
400 span
.purple-background
{ background: purple
; }
401 span
.red-background
{ background: red
; }
402 span
.silver-background
{ background: silver
; }
403 span
.teal-background
{ background: teal
; }
404 span
.white-background
{ background: white
; }
405 span
.yellow-background
{ background: yellow
; }
407 span
.big
{ font-size: 2em; }
408 span
.small
{ font-size: 0.6em; }
410 span
.underline
{ text-decoration: underline
; }
411 span
.overline
{ text-decoration: overline
; }
412 span
.line-through
{ text-decoration: line-through
; }
414 div
.unbreakable
{ page-break-inside: avoid
; }
424 margin-bottom: 1.5em;
426 div
.tableblock
> table
{
427 border: 3px solid
#527bbd;
429 thead
, p
.table
.header
{
436 /* Because the table frame attribute is overriden by CSS in most browsers. */
437 div
.tableblock
> table
[frame
="void"] {
440 div
.tableblock
> table
[frame
="hsides"] {
441 border-left-style: none
;
442 border-right-style: none
;
444 div
.tableblock
> table
[frame
="vsides"] {
445 border-top-style: none
;
446 border-bottom-style: none
;
457 margin-bottom: 1.5em;
459 thead
, p
.tableblock
.header
{
470 border-color: #527bbd;
471 border-collapse: collapse
;
473 th
.tableblock
, td
.tableblock
{
477 border-color: #527bbd;
480 table
.tableblock
.frame-topbot
{
481 border-left-style: hidden
;
482 border-right-style: hidden
;
484 table
.tableblock
.frame-sides
{
485 border-top-style: hidden
;
486 border-bottom-style: hidden
;
488 table
.tableblock
.frame-none
{
489 border-style: hidden
;
492 th
.tableblock
.halign-left
, td
.tableblock
.halign-left
{
495 th
.tableblock
.halign-center
, td
.tableblock
.halign-center
{
498 th
.tableblock
.halign-right
, td
.tableblock
.halign-right
{
502 th
.tableblock
.valign-top
, td
.tableblock
.valign-top
{
505 th
.tableblock
.valign-middle
, td
.tableblock
.valign-middle
{
506 vertical-align: middle
;
508 th
.tableblock
.valign-bottom
, td
.tableblock
.valign-bottom
{
509 vertical-align: bottom
;
520 padding-bottom: 0.5em;
521 border-top: 2px solid silver
;
522 border-bottom: 2px solid silver
;
527 body
.manpage div
.sectionbody
{
532 body
.manpage div#toc
{ display: none
; }
537 <script type=
"text/javascript">
539 var asciidoc
= { // Namespace.
541 /////////////////////////////////////////////////////////////////////
542 // Table Of Contents generator
543 /////////////////////////////////////////////////////////////////////
545 /* Author: Mihai Bazon, September 2002
546 * http://students.infoiasi.ro/~mishoo
548 * Table Of Content generator
551 * Feel free to use this script under the terms of the GNU General Public
552 * License, as long as you do not remove or alter this notice.
555 /* modified by Troy D. Hanson, September 2006. License: GPL */
556 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
559 toc: function (toclevels
) {
561 function getText(el
) {
563 for (var i
= el
.firstChild
; i
!= null; i
= i
.nextSibling
) {
564 if (i
.nodeType
== 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
566 else if (i
.firstChild
!= null)
572 function TocEntry(el
, text
, toclevel
) {
575 this.toclevel
= toclevel
;
578 function tocEntries(el
, toclevels
) {
579 var result
= new Array
;
580 var re
= new RegExp('[hH]([1-'+(toclevels
+1)+'])');
581 // Function that scans the DOM tree for header elements (the DOM2
582 // nodeIterator API would be a better technique but not supported by all
584 var iterate = function (el
) {
585 for (var i
= el
.firstChild
; i
!= null; i
= i
.nextSibling
) {
586 if (i
.nodeType
== 1 /* Node.ELEMENT_NODE */) {
587 var mo
= re
.exec(i
.tagName
);
588 if (mo
&& (i
.getAttribute("class") || i
.getAttribute("className")) != "float") {
589 result
[result
.length
] = new TocEntry(i
, getText(i
), mo
[1]-1);
599 var toc
= document
.getElementById("toc");
604 // Delete existing TOC entries in case we're reloading the TOC.
605 var tocEntriesToRemove
= [];
607 for (i
= 0; i
< toc
.childNodes
.length
; i
++) {
608 var entry
= toc
.childNodes
[i
];
609 if (entry
.nodeName
.toLowerCase() == 'div'
610 && entry
.getAttribute("class")
611 && entry
.getAttribute("class").match(/^toclevel/))
612 tocEntriesToRemove
.push(entry
);
614 for (i
= 0; i
< tocEntriesToRemove
.length
; i
++) {
615 toc
.removeChild(tocEntriesToRemove
[i
]);
618 // Rebuild TOC entries.
619 var entries
= tocEntries(document
.getElementById("content"), toclevels
);
620 for (var i
= 0; i
< entries
.length
; ++i
) {
621 var entry
= entries
[i
];
622 if (entry
.element
.id
== "")
623 entry
.element
.id
= "_toc_" + i
;
624 var a
= document
.createElement("a");
625 a
.href
= "#" + entry
.element
.id
;
626 a
.appendChild(document
.createTextNode(entry
.text
));
627 var div
= document
.createElement("div");
629 div
.className
= "toclevel" + entry
.toclevel
;
630 toc
.appendChild(div
);
632 if (entries
.length
== 0)
633 toc
.parentNode
.removeChild(toc
);
637 /////////////////////////////////////////////////////////////////////
638 // Footnotes generator
639 /////////////////////////////////////////////////////////////////////
641 /* Based on footnote generation code from:
642 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
645 footnotes: function () {
646 // Delete existing footnote entries in case we're reloading the footnodes.
648 var noteholder
= document
.getElementById("footnotes");
652 var entriesToRemove
= [];
653 for (i
= 0; i
< noteholder
.childNodes
.length
; i
++) {
654 var entry
= noteholder
.childNodes
[i
];
655 if (entry
.nodeName
.toLowerCase() == 'div' && entry
.getAttribute("class") == "footnote")
656 entriesToRemove
.push(entry
);
658 for (i
= 0; i
< entriesToRemove
.length
; i
++) {
659 noteholder
.removeChild(entriesToRemove
[i
]);
662 // Rebuild footnote entries.
663 var cont
= document
.getElementById("content");
664 var spans
= cont
.getElementsByTagName("span");
667 for (i
=0; i
<spans
.length
; i
++) {
668 if (spans
[i
].className
== "footnote") {
670 var note
= spans
[i
].getAttribute("data-note");
672 // Use [\s\S] in place of . so multi-line matches work.
673 // Because JavaScript has no s (dotall) regex flag.
674 note
= spans
[i
].innerHTML
.match(/\s*\[([\s\S]*)]\s*/)[1];
676 "[<a id='_footnoteref_" + n
+ "' href='#_footnote_" + n
+
677 "' title='View footnote' class='footnote'>" + n
+ "</a>]";
678 spans
[i
].setAttribute("data-note", note
);
680 noteholder
.innerHTML
+=
681 "<div class='footnote' id='_footnote_" + n
+ "'>" +
682 "<a href='#_footnoteref_" + n
+ "' title='Return to text'>" +
683 n
+ "</a>. " + note
+ "</div>";
684 var id
=spans
[i
].getAttribute("id");
685 if (id
!= null) refs
["#"+id
] = n
;
689 noteholder
.parentNode
.removeChild(noteholder
);
691 // Process footnoterefs.
692 for (i
=0; i
<spans
.length
; i
++) {
693 if (spans
[i
].className
== "footnoteref") {
694 var href
= spans
[i
].getElementsByTagName("a")[0].getAttribute("href");
695 href
= href
.match(/#.*/)[0]; // Because IE return full URL.
698 "[<a href='#_footnote_" + n
+
699 "' title='View footnote' class='footnote'>" + n
+ "</a>]";
705 install: function(toclevels
) {
708 function reinstall() {
709 asciidoc
.footnotes();
711 asciidoc
.toc(toclevels
);
715 function reinstallAndRemoveTimer() {
716 clearInterval(timerId
);
720 timerId
= setInterval(reinstall
, 500);
721 if (document
.addEventListener
)
722 document
.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer
, false);
724 window
.onload
= reinstallAndRemoveTimer
;
732 <body class=
"manpage">
738 <div class=
"sectionbody">
746 <h2 id=
"_synopsis">SYNOPSIS
</h2>
747 <div class=
"sectionbody">
748 <div class=
"paragraph"><p><em>guilt
</em> COMMAND [ARGS]
</p></div>
752 <h2 id=
"_description">DESCRIPTION
</h2>
753 <div class=
"sectionbody">
754 <div class=
"paragraph"><p>Andrew Morton originally developed a set of scripts for maintaining kernel
755 patches outside of any SCM tool. Others extended these into a suite called
756 quilt. The basic idea behind quilt is to maintain patches instead of
757 maintaining source files. Patches can be added, removed or reordered, and
758 they can be refreshed as you fix bugs or update to a new base revision.
759 quilt is very powerful, but it is not integrated with the underlying SCM
760 tools. This makes it difficult to visualize your changes.
</p></div>
761 <div class=
"paragraph"><p>Guilt allows one to use quilt functionality on top of a Git repository.
762 Changes are maintained as patches which are committed into Git. Commits can
763 be removed or reordered, and the underlying patch can be refreshed based on
764 changes made in the working directory. The patch directory can also be
765 placed under revision control, so you can have a separate history of changes
766 made to your patches.
</p></div>
770 <h2 id=
"_patches_directory">PATCHES DIRECTORY
</h2>
771 <div class=
"sectionbody">
772 <div class=
"paragraph"><p>In Guilt, all the patches are stored in .git/patches/$branch/, where $branch
773 is the name of the branch being worked on. This means that one can have a
774 independent series of patches for each branch present in the repository.
775 Each of these per-branch directories contains
3 special files:
</p></div>
776 <div class=
"paragraph"><p>guards: This file contains any guards that should be applied to the
777 series when pushing. It is only present when guards are selected.
</p></div>
778 <div class=
"paragraph"><p>series: This file contains a list of all the patch filenames relative to the
779 per-branch patch directory. Empty and commented out lines are ignored.
</p></div>
780 <div class=
"paragraph"><p>status: This file contains the state of the stack. What patches are applied.
</p></div>
784 <h2 id=
"_hooks">HOOKS
</h2>
785 <div class=
"sectionbody">
786 <div class=
"paragraph"><p>Any guilt operation may execute zero or more hook scripts which can be used
787 to run any housekeeping commands or even abort the execution of the command.
</p></div>
791 <h2 id=
"_hooks_directory">HOOKS DIRECTORY
</h2>
792 <div class=
"sectionbody">
793 <div class=
"paragraph"><p>Guilt follows the same basic design of hooks in Git itself. All Guilt hooks
794 are executable files (generally shell scripts, but they can be anything the
795 operating system can execute) in .git/hooks/guilt/.
</p></div>
796 <div class=
"paragraph"><p>The following hooks are supported:
</p></div>
797 <div class=
"dlist"><dl>
799 delete
<patch name
>
803 Executed when a patch is deleted from the patch series via
804 <a href=
"guilt-delete.html">guilt-delete(
1)
</a>.
811 <h2 id=
"_guilt_commands">GUILT COMMANDS
</h2>
812 <div class=
"sectionbody">
813 <div class=
"paragraph"><p>All commands can be called with or without a dash. e.g.
<em>guilt add
</em> or
814 <em>guilt-add
</em></p></div>
815 <div class=
"dlist"><dl>
817 <a href=
"guilt-add.html">guilt-add(
1)
</a>
821 guilt-add - Add a file to git and guilt.
825 <a href=
"guilt-applied.html">guilt-applied(
1)
</a>
829 guilt-applied - List applied patches.
833 <a href=
"guilt-branch.html">guilt-branch(
1)
</a>
837 guilt-branch - Branch the entire patch series.
841 <a href=
"guilt-commit.html">guilt-commit(
1)
</a>
845 guilt-commit - Commit specified number of patches.
849 <a href=
"guilt-delete.html">guilt-delete(
1)
</a>
853 guilt-delete - Delete a patch.
857 <a href=
"guilt-diff.html">guilt-diff(
1)
</a>
861 guilt-diff - Outputs various diffs.
865 <a href=
"guilt-export.html">guilt-export(
1)
</a>
869 guilt-export - Export a patch series (to be used by quilt).
873 <a href=
"guilt-files.html">guilt-files(
1)
</a>
877 guilt-files - Print the list of files that the topmost patch changes.
881 <a href=
"guilt-fold.html">guilt-fold(
1)
</a>
885 guilt-fold - Fold a specified patch into the topmost applied patch.
889 <a href=
"guilt-fork.html">guilt-fork(
1)
</a>
893 guilt-fork - Fork the topmost applied patch.
897 <a href=
"guilt-graph.html">guilt-graph(
1)
</a>
901 guilt-graph - Create a patch dependency graph.
905 <a href=
"guilt-guard.html">guilt-guard(
1)
</a>
909 guilt-guard - Assign guards to patches.
913 <a href=
"guilt-header.html">guilt-header(
1)
</a>
917 guilt-header - Print a patch header.
921 <a href=
"guilt-help.html">guilt-help(
1)
</a>
925 guilt-help - open man page of a guilt command.
929 <a href=
"guilt-import-commit.html">guilt-import-commit(
1)
</a>
933 guilt-import-commit - Import one or more commits as patches.
937 <a href=
"guilt-import.html">guilt-import(
1)
</a>
941 guilt-import - Import specified patch file.
945 <a href=
"guilt-init.html">guilt-init(
1)
</a>
949 guilt-init - Initialize guilt for use in a git repository.
953 <a href=
"guilt-new.html">guilt-new(
1)
</a>
957 guilt-new - Create a new patch.
961 <a href=
"guilt-next.html">guilt-next(
1)
</a>
965 guilt-next - Output the name of next patch to be pushed.
969 <a href=
"guilt-patchbomb.html">guilt-patchbomb(
1)
</a>
973 guilt-patchbomb - Email a series of commits interactively.
977 <a href=
"guilt-pop.html">guilt-pop(
1)
</a>
981 guilt-pop - Pop patches from the tree.
985 <a href=
"guilt-prev.html">guilt-prev(
1)
</a>
989 guilt-prev - Output name of second topmost applied patch.
993 <a href=
"guilt-push.html">guilt-push(
1)
</a>
997 guilt-push - Push patches onto the tree.
1000 <dt class=
"hdlist1">
1001 <a href=
"guilt-rebase.html">guilt-rebase(
1)
</a>
1005 guilt-rebase - Rebase pushed patches.
1008 <dt class=
"hdlist1">
1009 <a href=
"guilt-refresh.html">guilt-refresh(
1)
</a>
1013 guilt-refresh - Refresh topmost applied patch.
1016 <dt class=
"hdlist1">
1017 <a href=
"guilt-repair.html">guilt-repair(
1)
</a>
1021 guilt-repair - Repair the repository state.
1024 <dt class=
"hdlist1">
1025 <a href=
"guilt-rm.html">guilt-rm(
1)
</a>
1029 guilt-rm - Remove a file from the git tree and guilt.
1032 <dt class=
"hdlist1">
1033 <a href=
"guilt-select.html">guilt-select(
1)
</a>
1037 guilt-select - Select guards to apply when pushing patches.
1040 <dt class=
"hdlist1">
1041 <a href=
"guilt-series.html">guilt-series(
1)
</a>
1045 guilt-series - Print the stack of patches.
1048 <dt class=
"hdlist1">
1049 <a href=
"guilt-status.html">guilt-status(
1)
</a>
1053 guilt-status - Print the status of files since the last refresh.
1056 <dt class=
"hdlist1">
1057 <a href=
"guilt-top.html">guilt-top(
1)
</a>
1061 guilt-top - Output name of topmost applied patch.
1064 <dt class=
"hdlist1">
1065 <a href=
"guilt-unapplied.html">guilt-unapplied(
1)
</a>
1069 guilt-unapplied - List all unapplied patches.
1076 <h2 id=
"_author">Author
</h2>
1077 <div class=
"sectionbody">
1078 <div class=
"paragraph"><p>Written by Josef
"Jeff" Sipek
<<a href=
"mailto:jeffpc@josefsipek.net">jeffpc@josefsipek.net
</a>></p></div>
1082 <h2 id=
"_documentation">Documentation
</h2>
1083 <div class=
"sectionbody">
1084 <div class=
"paragraph"><p>Documentation by Brandon Philips
<<a href=
"mailto:brandon@ifup.org">brandon@ifup.org
</a>> and Josef
"Jeff" Sipek
1085 <<a href=
"mailto:jeffpc@josefsipek.net">jeffpc@josefsipek.net
</a>></p></div>
1089 <h2 id=
"_guilt">GUILT
</h2>
1090 <div class=
"sectionbody">
1091 <div class=
"paragraph"><p>Part of the
<a href=
"guilt.html">guilt(
7)
</a> suite
1092 (Generated for Guilt v0.36-rc1)
</p></div>
1096 <div id=
"footnotes"><hr /></div>
1098 <div id=
"footer-text">
1099 Last updated
2012-
03-
13 12:
01:
42 EDT