pax_global_header00006660000000000000000000000064126207122070014511gustar00rootroot0000000000000052 comment=56327c5b2369bf29348f28b48eeb85266d0af49f guilt-0.36/000077500000000000000000000000001262071220700125655ustar00rootroot00000000000000guilt-0.36/.dir-locals.el000066400000000000000000000001321262071220700152120ustar00rootroot00000000000000((nil . ((indent-tabs-mode . t) (tab-width . 8))) (sh-mode . ((sh-basic-offset . 8)))) guilt-0.36/.gitignore000066400000000000000000000002561262071220700145600ustar00rootroot00000000000000# # NOTE! Don't add files that are generated in specific # subdirectories here. Add them in the ".gitignore" file # in that subdirectory instead. # # Normal rules # *~ *.swp guilt-0.36/COPYING000066400000000000000000000435401262071220700136260ustar00rootroot00000000000000 Note that the only valid version of the GPL as far as guilt is concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x or whatever), unless explicitly otherwise stated. Josef "Jeff" Sipek ---------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. guilt-0.36/Documentation/000077500000000000000000000000001262071220700153765ustar00rootroot00000000000000guilt-0.36/Documentation/.gitignore000066400000000000000000000004201262071220700173620ustar00rootroot00000000000000# # Documentation/ ignore file # # Generated usage strings usage-*.txt # Generated list of commands & version string cmds.txt version.txt # Generated file dependency list doc.dep # Intermediate generated files *.xml # Generated manpages (troff & html) *.1 *.7 *.html guilt-0.36/Documentation/Contributing000066400000000000000000000066041262071220700177760ustar00rootroot00000000000000There's not much to helping develop Guilt. Most of the following has been adapted, or blatantly stolen from the Linux kernel's Documentation/SubmittingPatches file. :) 1) Hack on the code a bit Please follow this style guide: - Use tabs for indentation. - Put "then" on the same line as "if". - Follow the style of the existing code, except if it breaks the above guidlines. - If you change the code to conform to the style guide, please do so in a separate commit that does not change anything else. Please check that you change does not break "make test". Please add new testcases for any new functionality, and if you fix a bug. 2) Make a patch: Use "diff -up" or "diff -uprN" to create patches. Or simply use git to create patches against the latest version. And of course, you can use guilt to develop guilt. ;) 3) Describe the changes: If you generated a patch using diff, make sure you include a description of your changes at the beginning of the patch. If you used git, make sure the git commit message contains a good description of the changes. Prefix the email's subject with "[GUILT]" so it will not be confused with other git changes. For example: Subject: [GUILT] fix important bug 4) Send the patches to: Jeff Sipek , CC'ing the Git mailing list (git@vger.kernel.org). 5) Sign your work: To improve tracking of who did what, especially with patches that can percolate to their final resting place in the kernel through several layers of maintainers, we've introduced a "sign-off" procedure on patches that are being emailed around. The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as a open-source patch. The rules are pretty simple: if you can certify the below: Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. then you just add a line saying Signed-off-by: Random J Developer using your real name (sorry, no pseudonyms or anonymous contributions.) Some people also put extra tags at the end. They'll just be ignored for now, but you can do this to mark internal company procedures or just point out some special detail about the sign-off. guilt-0.36/Documentation/Features000066400000000000000000000006551262071220700171050ustar00rootroot00000000000000Patches directory ================= The patches directory is identical to that of Mercurial's mq. Each patch is stored as plain-text file, with a git-diff generated diff. By default, the diff does not use git's rename/copy detected patches, however specifying --git to guilt-refresh forces git-diff to use as many of git diff's features as possible. Command set =========== The commands mimic a mix of quilt and mq commands. guilt-0.36/Documentation/HOWTO000066400000000000000000000076731262071220700162360ustar00rootroot00000000000000Since guilt is heavily based on Mercurial queues (mq), some of the following is shamelessly stolen from the mq page [1]. Introduction: ============= Andrew Morton originally developed a set of scripts for maintaining kernel patches outside of any SCM tool. Others extended these into a suite called quilt [2]. The basic idea behind quilt is to maintain patches instead of maintaining source files. Patches can be added, removed or reordered, and they can be refreshed as you fix bugs or update to a new base revision. quilt is very powerful, but it is not integrated with the underlying SCM tools. This makes it difficult to visualize your changes. Guilt allows one to use quilt functionality on top of a Git repository. Changes are maintained as patches which are committed into Git. Commits can be removed or reordered, and the underlying patch can be refreshed based on changes made in the working directory. The patch directory can also be placed under revision control, so you can have a separate history of changes made to your patches. Patches Directory: ================== In Guilt, all the patches are stored in .git/patches/$branch/, where $branch is the name of the branch being worked on. This means that one can have a independent series of patches for each branch present in the repository. Each of these per-branch directories contains 2 special files: series: This file contains a list of all the patch filenames relative to the per-branch patch directory. Empty and commented out lines are ignored. status: This file contains the state of the stack. What patches are applied. Diving in: ========== This section is mostly for those savvy enough to just dive in, and not read documentation ;) A more detailed description of what is going on is below. $ cd some_git_repo # initialize the patch directory $ guilt init # create a new patch called 'patch1' $ guilt new patch1 # edit somefile $ vim somefile # refresh patch1 with the changes we just made $ guilt refresh # If we look at .git/patches/$branch/patch1, we see a diff with the changes # we just made # create a new patch called 'patch2' $ guilt new patch2 # edit somefile again $ vim somefile # refresh patch2 $ guilt refresh # list all applied patches $ guilt applied # list all applied and unapplied patches $ guilt series # pop the top most applied patch $ guilt pop # push the next patch on top of the currently applied patches $ guilt push # pop all patches $ guilt pop -a # push all patches $ guilt push -a Why use Guilt? ============== The quilt pdf [3] paper seems to be a good starting point for why use a quilt-like system. As to why use Guilt over other quilt-like git porceilans, that's mostly up to: 1) User's taste 2) Format of the patches directory Working with Guilt: =================== First, get a repository to work on. Here's one that we'll use as an example: $ git-clone git://git.kernel.org/pub/scm/linux/kernel/jsipek/guilt-hello.git Now, it is time to initialize the patches directory using guilt's init command: $ cd hello $ guilt init Create a new patch called "new_hello_string" $ guilt new new_hello_string This creates a new empty file .git/patches/master/new_hello_string. Now, it is time to change hello.c. Suppose we change the string being outputed to "Howdy!\n". Currently, the changes live in the working copy only. Running refresh refreshes the (currently empty) patch: $ guilt refresh If we look at the patch file again, we'll see that it now contains a patch that changes the hello string. Let's create a second patch called "say_name" $ guilt new say_name ...and edit hello.c to output the programs name by adding: printf("My name is '%s'\n", argv[0]); And of course, we refresh the patch: $ guilt refresh As you might have expected, this updates the second patch file with the appropriate diff. References ========== [1] http://www.selenic.com/mercurial/wiki/index.cgi/MqExtension [2] http://savannah.nongnu.org/projects/quilt [3] http://www.suse.de/~agruen/quilt.pdf guilt-0.36/Documentation/Makefile000066400000000000000000000035361262071220700170450ustar00rootroot00000000000000MAN1_TXT= $(wildcard guilt-*.txt) MAN7_TXT=guilt.txt DOC_HTML=$(patsubst %.txt,%.html,$(MAN1_TXT) $(MAN7_TXT)) DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT)) DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT)) USAGE=$(patsubst %.txt,usage-%.txt,$(MAN1_TXT)) VERSION=$(shell git describe 2> /dev/null || sed -n -e '/^GUILT_VERSION=/ { s/^GUILT_VERSION="/v/; s/"//; p; q; }' ../guilt) prefix?=$(PREFIX) bindir?=$(prefix)/bin htmldir?=$(prefix)/html mandir?=$(prefix)/man man1dir=$(mandir)/man1 man7dir=$(mandir)/man7 # DESTDIR= ASCIIDOC=asciidoc ASCIIDOC_EXTRA = INSTALL?=install XMLTO=xmlto XMLTO_EXTRA = --skip-validation PERL=perl all: html man html: $(DOC_HTML) $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN7): asciidoc.conf man: man1 man7 man1: $(DOC_MAN1) man7: $(DOC_MAN7) install: man $(INSTALL) -d -m755 $(DESTDIR)$(man1dir) $(DESTDIR)$(man7dir) $(INSTALL) -m644 $(DOC_MAN1) $(DESTDIR)$(man1dir) $(INSTALL) -m644 $(DOC_MAN7) $(DESTDIR)$(man7dir) install-html: html $(INSTALL) -d -m755 $(DESTDIR)$(htmldir) $(INSTALL) -m644 $(DOC_HTML) $(DESTDIR)$(htmldir) # # Determine "include::" file references in asciidoc files. # doc.dep : $(wildcard *.txt) build-docdep.perl rm -f $@+ $@ $(PERL) ./build-docdep.perl >$@+ mv $@+ $@ -include doc.dep version.txt: echo "(Generated for Guilt $(VERSION))" > version.txt cmds.txt: cmd-list.sh $(MAN1_TXT) sh ./cmd-list.sh guilt.7 guilt.html: guilt.txt footer.txt version.txt guilt.xml: cmds.txt clean: rm -f *.xml *.html *.1 *.7 doc.dep rm -f cmds.txt rm -f usage-*.txt rm -f version.txt usage-guilt-%.txt: ../guilt-% usage.sh sh ./usage.sh $< %.html : %.txt footer.txt version.txt $(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf $(ASCIIDOC_EXTRA) $< %.1 %.7 : %.xml $(XMLTO) -m callouts.xsl $(XMLTO_EXTRA) man $< %.xml : %.txt footer.txt version.txt $(ASCIIDOC) -b docbook -a version=$(VERSION) -d manpage -f asciidoc.conf $< guilt-0.36/Documentation/Requirements000066400000000000000000000001111262071220700177750ustar00rootroot00000000000000The following software is needed to run guilt: awk sed sh coreutils git guilt-0.36/Documentation/asciidoc.conf000066400000000000000000000044061262071220700200270ustar00rootroot00000000000000## linkguilt: macro # # Usage: linkguilt:command[manpage-section] # # Note, {0} is the manpage section, while {target} is the command. # # Show guilt link as: (
); if section is defined, else just # show the command. [macros] (?su)[\\]?(?Plinkguilt):(?P\S*?)\[(?P.*?)\]= [attributes] asterisk=* plus=+ caret=^ startsb=[ endsb=] backslash=\ tilde=~ apostrophe=' backtick=` litdd=-- ifdef::backend-docbook[] [linkguilt-inlinemacro] {0%{target}} {0#} {0#{target}{0}} {0#} endif::backend-docbook[] ifdef::backend-docbook[] ifndef::guilt-asciidoc-no-roff[] # "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this. # v1.72 breaks with this because it replaces dots not in roff requests. [listingblock] {title} ifdef::doctype-manpage[] .ft C endif::doctype-manpage[] | ifdef::doctype-manpage[] .ft endif::doctype-manpage[] {title#} endif::guilt-asciidoc-no-roff[] ifdef::guilt-asciidoc-no-roff[] ifdef::doctype-manpage[] # The following two small workarounds insert a simple paragraph after screen [listingblock] {title} | {title#} [verseblock] {title} {title%} {title#} | {title#} {title%} endif::doctype-manpage[] endif::guilt-asciidoc-no-roff[] endif::backend-docbook[] ifdef::doctype-manpage[] ifdef::backend-docbook[] [header] template::[header-declarations] {mantitle} {manvolnum} Guilt {version} Guilt Manual {manname} {manpurpose} endif::backend-docbook[] endif::doctype-manpage[] ifdef::backend-xhtml11[] [linkguilt-inlinemacro] {target}{0?({0})} endif::backend-xhtml11[] guilt-0.36/Documentation/build-docdep.perl000077500000000000000000000020331262071220700206160ustar00rootroot00000000000000#!/usr/bin/perl my %include = (); my %included = (); for my $text (<*.txt>) { open I, '<', $text || die "cannot read: $text"; while () { if (/^include::/) { chomp; s/^include::\s*//; s/\[\]//; $include{$text}{$_} = 1; $included{$_} = 1; } } close I; } # Do we care about chained includes??? my $changed = 1; while ($changed) { $changed = 0; while (my ($text, $included) = each %include) { for my $i (keys %$included) { # $text has include::$i; if $i includes $j # $text indirectly includes $j. if (exists $include{$i}) { for my $j (keys %{$include{$i}}) { if (!exists $include{$text}{$j}) { $include{$text}{$j} = 1; $included{$j} = 1; $changed = 1; } } } } } } while (my ($text, $included) = each %include) { if (! exists $included{$text} && (my $base = $text) =~ s/\.txt$//) { my ($suffix) = '1'; if ($base eq 'guilt') { $suffix = '7'; # yuck... } print "$base.html $base.$suffix : ", join(" ", keys %$included), "\n"; } } guilt-0.36/Documentation/callouts.xsl000066400000000000000000000020411262071220700177510ustar00rootroot00000000000000 .sp .br guilt-0.36/Documentation/cmd-list.sh000066400000000000000000000010741262071220700174500ustar00rootroot00000000000000#!/bin/sh format_one() { cmd=`echo $1 | sed -e 's/\.txt//'` desc=`cat "$1" | awk ' BEGIN{state=0} /^NAME$/{state=1; next} /^----$/ && (state==1){state=2; next} (state!=2){next} {print $0; exit} '` len=`expr length "${cmd}"` if [ -z "$desc" ]; then echo "No description found in $cmd.txt" >&2 exit 1 elif [ "`expr substr "$desc" 1 $len`" != "$cmd" ]; then echo "Description does not match $cmd: $desc" >&2 exit 1 fi echo "linkguilt:$cmd[1]::" echo " $desc." echo "" } for m in guilt-*.txt ; do format_one "$m" done > cmds.txt+ mv cmds.txt+ cmds.txt guilt-0.36/Documentation/footer.txt000066400000000000000000000001111262071220700174260ustar00rootroot00000000000000GUILT ----- Part of the linkguilt:guilt[7] suite include::version.txt[] guilt-0.36/Documentation/guilt-add.txt000066400000000000000000000010401262071220700200040ustar00rootroot00000000000000guilt-add(1) ============ NAME ---- guilt-add - Add a file to git and guilt SYNOPSIS -------- include::usage-guilt-add.txt[] DESCRIPTION ----------- Adds the files specified to git using git-add(1) making it available to guilt. OPTIONS ------- :: Files to add EXAMPLES -------- Create and add a new file example.c $ touch example.c $ guilt add example.c Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-applied.txt000066400000000000000000000005641262071220700207040ustar00rootroot00000000000000guilt-applied(1) ================ NAME ---- guilt-applied - List applied patches SYNOPSIS -------- include::usage-guilt-applied.txt[] DESCRIPTION ----------- Prints a list of all applied patches. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-branch.txt000066400000000000000000000012341262071220700205160ustar00rootroot00000000000000guilt-branch(1) =============== NAME ---- guilt-branch - Branch the entire patch series SYNOPSIS -------- include::usage-guilt-branch.txt[] DESCRIPTION ----------- Create a copy of the entire branch patch directory (.git/patches/) to (.git/patches/), create a new git branch and check it out. OPTIONS ------- :: The name of the new branch to create. If not specified, the current branch name is appended with the current year, month and day. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-commit.txt000066400000000000000000000010561262071220700205530ustar00rootroot00000000000000guilt-commit(1) =============== NAME ---- guilt-commit - Commit specified number of patches SYNOPSIS -------- include::usage-guilt-commit.txt[] Turn specified number of bottom most patches into Git commits. This removes the the patches from the series, and status file. OPTIONS ------- --all:: -a:: Commit all applied patches -n :: Commit bottom most patches Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-delete.txt000066400000000000000000000010501262071220700205170ustar00rootroot00000000000000guilt-delete(1) =============== NAME ---- guilt-delete - Delete a patch SYNOPSIS -------- include::usage-guilt-delete.txt[] DESCRIPTION ----------- Delete an unapplied patch from the series. OPTIONS ------- -f:: Remove the patch from the series and disk :: Name of the patch to delete. EXAMPLES -------- Delete a patch called 'foobar': $ guilt delete foobar Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-diff.txt000066400000000000000000000011671262071220700201760ustar00rootroot00000000000000guilt-diff(1) ============= NAME ---- guilt-diff - Outputs various diffs SYNOPSIS -------- include::usage-guilt-diff.txt[] DESCRIPTION ----------- Outputs top-most applied diff and any additional changes in the working directory to standard output. OPTIONS ------- -z:: Output a interdiff against the top-most applied patch. This should produce the same diff as "+guilt new -f foo+". ...:: Restrict diff output to a given set of files. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-export.txt000066400000000000000000000010061262071220700205770ustar00rootroot00000000000000guilt-export(1) =============== NAME ---- guilt-export - Export a patch series (to be used by quilt) SYNOPSIS -------- include::usage-guilt-export.txt[] DESCRIPTION ----------- Export a guilt series to be used by quilt. OPTIONS ------- :: Name of the directory to export the patch series to. (defaults to patches). Author ------ Written by Pierre Habouzit Documentation ------------- Documentation by Pierre Habouzit include::footer.txt[] guilt-0.36/Documentation/guilt-files.txt000066400000000000000000000010371262071220700203640ustar00rootroot00000000000000guilt-files(1) ============== NAME ---- guilt-files - Print the list of files that the topmost patch changes SYNOPSIS -------- include::usage-guilt-files.txt[] DESCRIPTION ----------- Print the list of files that the topmost patch changes. OPTIONS ------- -v:: Verbose output -a:: List all files in all applied patches -l:: Add patch name to the output Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-fold.txt000066400000000000000000000010641262071220700202060ustar00rootroot00000000000000guilt-fold(1) ============= NAME ---- guilt-fold - Fold a specified patch into the topmost applied patch SYNOPSIS -------- include::usage-guilt-fold.txt[] OPTIONS ------- -k:: Do not remove the patch file. :: Fold this patch into the topmost applied patch. 'patchname' is removed from the series, as well as from the patches directory. (A backup file is created.) Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-fork.txt000066400000000000000000000010021262071220700202130ustar00rootroot00000000000000guilt-fork(1) ============= NAME ---- guilt-fork - Fork the topmost applied patch SYNOPSIS -------- include::usage-guilt-fork.txt[] DESCRIPTION ----------- Create a copy of the top most patch, and replace the entry in the series file to use this new patch file. OPTIONS ------- :: The name of the new patch to create. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-graph.txt000066400000000000000000000013331262071220700203620ustar00rootroot00000000000000guilt-graph(1) ============== NAME ---- guilt-graph - Create a patch dependency graph SYNOPSIS -------- include::usage-guilt-graph.txt[] DESCRIPTION ----------- Create a dot(1) directed graph showing the dependencies between applied patches. OPTIONS ------- -x :: Ignore files that matches the given grep pattern. Can be repeated to ignore several files. This can be useful to ignore for instance ChangeLog files that every commit modifies. :: Instead of starting with the topmost applied patch, start with . Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-guard.txt000066400000000000000000000014501262071220700203630ustar00rootroot00000000000000guilt-guard(1) ============== NAME ---- guilt-guard - Assign guards to patches SYNOPSIS -------- include::usage-guilt-guard.txt[] DESCRIPTION ----------- Assign guards to the specified patch, or to the patch on top of the stack if no patch is given on the command line. An unguarded patch is always pushed. A positive guard begins with a +. A patch with a positive guard is pushed *only if* the guard is selected. A negative guard begins with a -. A patch with a negative guard is always pushed, *unless* the guard is selected. OPTIONS ------- -l|--list:: List all patches and their guards -n|--none:: Remove all guards from a patch Author ------ Written by Eric Lesh Documentation ------------- Documentation by Eric Lesh include::footer.txt[] guilt-0.36/Documentation/guilt-header.txt000066400000000000000000000013741262071220700205160ustar00rootroot00000000000000guilt-header(1) =============== NAME ---- guilt-header - Print a patch header SYNOPSIS -------- include::usage-guilt-header.txt[] DESCRIPTION ----------- Prints either the topmost patch's header or the header of a specified patch. -e:: Open the header in an editor, instead of printing it. -E:: Open the raw patch in an editor, instead of printing it. :: Name of the patch. If a patch with exactly this name exists, use it. Otherwise, treat the name as a regexp; if the regexp matches a single patch, use it. Otherwise, list all matching patch names to stderr and fail. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-help.txt000066400000000000000000000007521262071220700202150ustar00rootroot00000000000000guilt-help(1) ============ NAME ---- guilt-help - open man page of a guilt command SYNOPSIS -------- include::usage-guilt-help.txt[] DESCRIPTION ----------- Open up the man page for a guilt command. EXAMPLES -------- Open the guilt-status man page $ guilt help status Open the guilt man page $ guilt help Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-import-commit.txt000066400000000000000000000007341262071220700220650ustar00rootroot00000000000000guilt-import-commit(1) ====================== NAME ---- guilt-import-commit - Import one or more commits as patches SYNOPSIS -------- include::usage-guilt-import-commit.txt[] DESCRIPTION ----------- Import one or more commits as individual patches. OPTIONS ------- include::hash-range.txt[] Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-import.txt000066400000000000000000000010651262071220700205750ustar00rootroot00000000000000guilt-import(1) =============== NAME ---- guilt-import - Import specified patch file SYNOPSIS -------- include::usage-guilt-import.txt[] DESCRIPTION ----------- Import a specified patch file into the series, placing it after the current topmost patch. OPTIONS ------- -P :: Name of the patch within Guilt. :: Name of the file to be imported into the series. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-init.txt000066400000000000000000000012311262071220700202210ustar00rootroot00000000000000guilt-init(1) ============= NAME ---- guilt-init - Initialize guilt for use in a git repository SYNOPSIS -------- include::usage-guilt-init.txt[] DESCRIPTION ----------- Initialize a git repository for use with guilt EXAMPLES -------- First, get a repository to work on. Here's one that we'll use as an example: $ git clone git://git.kernel.org/pub/scm/linux/kernel/jsipek/guilt-hello.git Now, it initialize the patches directory using guilt's init command: $ cd hello $ guilt init Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-new.txt000066400000000000000000000026101262071220700200510ustar00rootroot00000000000000guilt-new(1) ============ NAME ---- guilt-new - Create a new patch SYNOPSIS -------- include::usage-guilt-new.txt[] DESCRIPTION ----------- Create a new patch and push it on top of the stack. An optional patch description can be supplied either interactively on via the command line. OPTIONS ------- -f:: Force patch creation if there are unrefreshed changes. These changes will get automatically imported into the new patch. -s:: Add a Signed-off-by with your committer identifier string to the patch message. -e:: Edit the patch message interactively. This option can be combined with -s to easily sign off on the patch. -m :: The "" string will used as the commit message. This option can be combined with -s to easily sign off on the patch. :: Name of the patch to create. This must be a legal relative pathname string. For example, "foo", "foo/bar", and "foo/bar/foobar" are all valid. EXAMPLES -------- Create a new patch called 'foobar': $ guilt new foobar Create a patch called 'foo' and supply a patch description interactively: $ guilt new -e foo Create a patch called 'bar' with a provided patch description and sign off on the patch: $ guilt new -s -m patch-fu bar Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-next.txt000066400000000000000000000010461262071220700202400ustar00rootroot00000000000000guilt-next(1) ============= NAME ---- guilt-next - Output the name of next patch to be pushed SYNOPSIS -------- include::usage-guilt-next.txt[] DESCRIPTION ----------- Output the name of next patch to be pushed. If linkguilt:guilt-push[1] is issued, this patch would be the topmost patch. OPTIONS ------- -p:: --path:: Output full path instead of just patch name. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-patchbomb.txt000066400000000000000000000021301262071220700212140ustar00rootroot00000000000000guilt-patchbomb(1) ================== NAME ---- guilt-patchbomb - Email a series of commits interactively SYNOPSIS -------- include::usage-guilt-patchbomb.txt[] DESCRIPTION ----------- Send a series of commits via email asking for To, CC and other information interactively. OPTIONS ------- -n:: Don't send -s:: Don't add additional repository committer sign-offs to the patch. This allows the sign-off chain to be fully expressed in the commit messages and not changed by the act of sending a patchbomb. --in-reply-to :: Set the In-reply-to header to the specified message id. This allows the patches to be sent as replies to an arbitrary message. --git:: Generate a patch which uses all the features offered by the git diff format (e.g., rename and copy detection). --subject-prefix :: Rather than using the standard [PATCH] prefix in the subject line, use [] instead. include::hash-range.txt[] Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-pop.txt000066400000000000000000000012421262071220700200560ustar00rootroot00000000000000guilt-pop(1) ============ NAME ---- guilt-pop - Pop patches from the tree SYNOPSIS -------- include::usage-guilt-pop.txt[] OPTIONS ------- --all:: -a:: Pop all patches off the tree -f:: Force; discards any unrefreshed changes -n :: Push specified number of patches :: Pop all patches up to and including this patch off the tree If no patchname is given, pop the top-most patch. Exit with a non-zero exit status if requested to pop more patches than there are on the stack. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-prev.txt000066400000000000000000000010501262071220700202310ustar00rootroot00000000000000guilt-prev(1) ============= NAME ---- guilt-prev - Output name of second topmost applied patch SYNOPSIS -------- include::usage-guilt-prev.txt[] DESCRIPTION ----------- Output name of second topmost applied patch. If linkguilt:guilt-pop[1] is used, this patch will become the topmost patch. OPTIONS ------- -p:: --path:: Output full path instead of just patch name. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-push.txt000066400000000000000000000013141262071220700202370ustar00rootroot00000000000000guilt-push(1) ============= NAME ---- guilt-push - Push patches onto the tree SYNOPSIS -------- include::usage-guilt-push.txt[] OPTIONS ------- -f:: Force the push if the patch doesn't apply cleanly --all:: -a:: Push all patches on the tree -n :: Push specified number of patches :: Push all patches up to and including this patch on the tree If no patchname is given, push the next patch in the series onto the tree. Exit with a non-zero exit status if requested to push more patches than there are in the series. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-rebase.txt000066400000000000000000000012321262071220700205200ustar00rootroot00000000000000guilt-rebase(1) =============== NAME ---- guilt-rebase - Rebase pushed patches SYNOPSIS -------- include::usage-guilt-rebase.txt[] DESCRIPTION ----------- Rebase pushed patches against an upstream branch. OPTIONS ------- :: Branch, tag, or a commit hash identifying upstream repository history. EXAMPLES -------- Rebase current tree against Linus's 2.6 tree $ git fetch git://git.kernel.org/pub/scm/linux/kernel/git/tovalds/linux-2.6.git $ guilt rebase FETCH_HEAD Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-refresh.txt000066400000000000000000000015641262071220700207250ustar00rootroot00000000000000guilt-refresh(1) ================ NAME ---- guilt-refresh - Refresh topmost applied patch SYNOPSIS -------- include::usage-guilt-refresh.txt[] DESCRIPTION ----------- Refresh topmost applied patch with changes in the working copy. OPTIONS ------- --git:: Generate a patch which uses all the features offered by the git diff format (e.g., rename and copy detection). --diffstat:: Include a diffstat output in the patch file. Useful for cases where patches will be submitted with other tools. + If the command line option is omitted, the corresponding git-config(1) option "guilt.diffstat" will be queried. So this would enable diffstat output by default: git config --global guilt.diffstat true Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-repair.txt000066400000000000000000000016651262071220700205530ustar00rootroot00000000000000guilt-repair(1) =============== NAME ---- guilt-repair - Repair the repository state SYNOPSIS -------- include::usage-guilt-repair.txt[] DESCRIPTION ----------- Perform various repository repairs. You must specify one mode of repair: --full:: Tries to repair everything possible. Additionally, it resets the repository state by reseting the HEAD to what's believed to be the proper commit, and reseting the applied stack. The end result should be a repository with no patches applied. WARNING: Running this command may result in commits and working directory changes being lost. You may want to create a new reference (e.g., branch, or reflog) to the original HEAD before using "guilt repair". --status:: Upgrade the status file from old format to new. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-rm.txt000066400000000000000000000006561262071220700177060ustar00rootroot00000000000000guilt-rm(1) =========== NAME ---- guilt-rm - Remove a file from the git tree and guilt SYNOPSIS -------- include::usage-guilt-rm.txt[] DESCRIPTION ----------- Removes the files specified from git using git-rm(1). OPTIONS ------- :: Files to add Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-select.txt000066400000000000000000000017221262071220700205420ustar00rootroot00000000000000guilt-select(1) =============== NAME ---- guilt-select - Select guards to apply when pushing patches SYNOPSIS -------- include::usage-guilt-select.txt[] DESCRIPTION ----------- Select guards to apply when pushing patches. Guards are selected without the + or - prefix. Patches are applied in the following way: * An unguarded patch is always applied. * A patch with a positive guard is applied *only* if the guard is selected with "+guilt select+". * A patch with a negative guard is applied *unless* the guard is selected with "+guilt select+". OPTIONS ------- -n|--none:: Remove all selected guards --pop:: Pop back to the first guarded patch --reapply:: Pop back to first guarded patch, select a new guard, and push -s|--series:: List all guards listed in the series file Author ------ Written by Eric Lesh Documentation ------------- Documentation by Eric Lesh include::footer.txt[] guilt-0.36/Documentation/guilt-series.txt000066400000000000000000000012131262071220700205500ustar00rootroot00000000000000guilt-series(1) =============== NAME ---- guilt-series - Print the stack of patches SYNOPSIS -------- include::usage-guilt-series.txt[] DESCRIPTION ----------- Print the stack of patches on this branch. OPTIONS ------- -e:: Edit the series file. -g:: Instead of outputting the series, start gitk and display the applied patches. Ignores the verbose flag. -v:: Verbose output; adds an = next to the top most applied patch, and a + to all other applied patches Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-status.txt000066400000000000000000000016511262071220700206070ustar00rootroot00000000000000guilt-status(1) =============== NAME ---- guilt-status - Print the status of files since the last refresh SYNOPSIS -------- include::usage-guilt-status.txt[] DESCRIPTION ----------- Each file is printed with a prefix that describes it's status. A added C copied D deleted M modified R renamed T type change (e.g., mode) U unmerged ? untracked OPTIONS ------- -n:: Hide status prefix in the output -a:: -A:: Display only added files -c:: -C:: Display only copied files -d:: -D:: Display only deleted files -m:: -M:: Display only modified files -r:: -R:: Display only renamed files -t:: -T:: Display only files with a status change (e.g., mode) -u:: -U:: Display only unmerged files -x:: -X:: Display only unknown files Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Brandon Philips include::footer.txt[] guilt-0.36/Documentation/guilt-top.txt000066400000000000000000000006121262071220700200620ustar00rootroot00000000000000guilt-top(1) ============ NAME ---- guilt-top - Output name of topmost applied patch SYNOPSIS -------- include::usage-guilt-top.txt[] OPTIONS ------- -p:: --path:: Output full path instead of just patch name. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt-unapplied.txt000066400000000000000000000006001262071220700212360ustar00rootroot00000000000000guilt-unapplied(1) ================== NAME ---- guilt-unapplied - List all unapplied patches SYNOPSIS -------- include::usage-guilt-unapplied.txt[] DESCRIPTION ----------- List all unapplied patches. Author ------ Written by Josef "Jeff" Sipek Documentation ------------- Documentation by Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/guilt.txt000066400000000000000000000042621262071220700172670ustar00rootroot00000000000000guilt(7) ======== NAME ---- guilt - quilt on top of git SYNOPSIS -------- 'guilt' COMMAND [ARGS] DESCRIPTION ----------- Andrew Morton originally developed a set of scripts for maintaining kernel patches outside of any SCM tool. Others extended these into a suite called quilt. The basic idea behind quilt is to maintain patches instead of maintaining source files. Patches can be added, removed or reordered, and they can be refreshed as you fix bugs or update to a new base revision. quilt is very powerful, but it is not integrated with the underlying SCM tools. This makes it difficult to visualize your changes. Guilt allows one to use quilt functionality on top of a Git repository. Changes are maintained as patches which are committed into Git. Commits can be removed or reordered, and the underlying patch can be refreshed based on changes made in the working directory. The patch directory can also be placed under revision control, so you can have a separate history of changes made to your patches. PATCHES DIRECTORY ----------------- In Guilt, all the patches are stored in .git/patches/$branch/, where $branch is the name of the branch being worked on. This means that one can have a independent series of patches for each branch present in the repository. Each of these per-branch directories contains 3 special files: guards: This file contains any guards that should be applied to the series when pushing. It is only present when guards are selected. series: This file contains a list of all the patch filenames relative to the per-branch patch directory. Empty and commented out lines are ignored. status: This file contains the state of the stack. What patches are applied. HOOKS ----- Any guilt operation may execute zero or more hook scripts which can be used to run any housekeeping commands or even abort the execution of the command. include::hooks.txt[] GUILT COMMANDS -------------- All commands must be called without a dash. e.g. 'guilt add' include::cmds.txt[] Author ------ Written by Josef "Jeff" Sipek Documentation -------------- Documentation by Brandon Philips and Josef "Jeff" Sipek include::footer.txt[] guilt-0.36/Documentation/hash-range.txt000066400000000000000000000004671262071220700201630ustar00rootroot00000000000000:: Only the specified revision. ..[]:: Revisions starting from '' until ''. The '' revision it self is NOT included, while '' is. If '' is not specified, it is assumed to be HEAD. ..:: All revisions until the '' revision (inclusive). guilt-0.36/Documentation/hooks.txt000066400000000000000000000006001262071220700172560ustar00rootroot00000000000000HOOKS DIRECTORY --------------- Guilt follows the same basic design of hooks in Git itself. All Guilt hooks are executable files (generally shell scripts, but they can be anything the operating system can execute) in .git/hooks/guilt/. The following hooks are supported: delete :: Executed when a patch is deleted from the patch series via linkguilt:guilt-delete[1]. guilt-0.36/Documentation/usage.sh000066400000000000000000000002401262071220700170320ustar00rootroot00000000000000#!/bin/sh name=$(basename $1) u=$(grep USAGE $1 | sed 's/USAGE="//' | sed 's/"$//') echo "'`echo $name | sed -e 's/^guilt-/guilt /'`' $u" > usage-$name.txt guilt-0.36/Makefile000066400000000000000000000015661262071220700142350ustar00rootroot00000000000000PREFIX?=/usr/local DESTDIR?= INSTALL?=install OSFILES = $(filter-out $(wildcard *~),$(wildcard os.*)) SCRIPTS = $(filter-out $(wildcard *~),$(wildcard guilt-*)) .PHONY: all all: @echo "Nothing to build, it is all bash :)" @echo "Try make install" .PHONY: install install: $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin/ $(INSTALL) -m 755 guilt $(DESTDIR)$(PREFIX)/bin/ $(INSTALL) -d $(DESTDIR)$(PREFIX)/lib/guilt/ $(INSTALL) -m 755 $(SCRIPTS) $(DESTDIR)$(PREFIX)/lib/guilt/ $(INSTALL) -m 644 $(OSFILES) $(DESTDIR)$(PREFIX)/lib/guilt/ .PHONY: uninstall uninstall: ./uninstall $(DESTDIR)$(PREFIX)/bin/ $(SCRIPTS) .PHONY: doc doc: $(MAKE) -C Documentation all .PHONY: install-doc install-doc: $(MAKE) -C Documentation install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR) INSTALL=$(INSTALL) .PHONY: test test: make -C regression all .PHONY: clean clean: $(MAKE) -C Documentation clean guilt-0.36/guilt000077500000000000000000000513711262071220700136460ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2015 # GUILT_VERSION="0.36" GUILT_NAME="Irgendwann" GUILT="$(basename "$0")" # If the first argument is one of the below, display the man page instead of # the rather silly and mostly useless usage string case $1 in -h|--h|--he|--hel|--help) shift exec guilt help "$@" exit ;; -V|--ver|--versi|--versio|--version) echo "Guilt version $GUILT_VERSION" exit ;; esac # we change directories ourselves SUBDIRECTORY_OK=1 . "$(git --exec-path)/git-sh-setup" # # Shell library # usage() { echo "Usage: guilt $CMDNAME $USAGE" >&2 exit 1 } # Print arguments, but no trailing newline. # (echo -n is a bashism, use printf instead) _disp() { printf "%s" "$*" } # Print arguments. # (echo -E is a bashism, use printf instead) disp() { printf "%s\n" "$*" } # Print arguments, processing backslash sequences. # (echo -e is a bashism, use printf instead) disp_e() { printf "%b\n" "$*" } noerr() { "$@" 2>/dev/null } silent() { "$@" >/dev/null 2>/dev/null } ######## GUILT_PATH="$(dirname "$0")" guilt_commands() { find "$GUILT_PATH/../lib/guilt" -maxdepth 1 -name "guilt-*" -type f -perm +111 2> /dev/null | sed -e "s/.*\\/$GUILT-//" find "$GUILT_PATH" -maxdepth 1 -name "guilt-*" -type f -perm +111 | sed -e "s/.*\\/$GUILT-//" } # by default, we shouldn't fail cmd= if [ $# -ne 0 ]; then # take first arg, and try to execute it arg="$1" dir="$GUILT_PATH" libdir="$GUILT_PATH/../lib/guilt" if [ -x "$dir/guilt-$arg" ]; then cmd="$dir/guilt-$arg" CMDNAME=$arg elif [ -x "$libdir/guilt-$arg" ]; then cmd="$libdir/guilt-$arg" CMDNAME=$arg else # might be a short handed for command in $(guilt_commands); do case $command in $arg*) if [ -x "$dir/guilt-$command" ]; then cmd="$dir/guilt-$command" CMDNAME=$command elif [ -x "$libdir/guilt-$command" ]; then cmd="$libdir/guilt-$command" CMDNAME=$command fi ;; esac done fi if [ -z "$cmd" ]; then disp "Command $arg not found" >&2 disp "" >&2 exit 1 fi shift else # no args passed or invalid command entered, just output help summary disp "Guilt v$GUILT_VERSION" disp "" disp "Pick a command:" guilt_commands | sort | column | column -t | sed -e 's/^/ /' disp "" disp "Example:" disp_e "\tguilt push" # now, let's exit exit 1 fi ######## # # Library goodies # # usage: valid_patchname valid_patchname() { # Once we only support Git 1.7.8 and newer, the command below # could be replaced with: # # git check-ref-format --allow-onelevel "$1" # # Instead, we arbitrarily prepend one level. The result # should be the same, and this is portable to all existing # versions of Git. git check-ref-format a/"$1" if [ $? -ne 0 ]; then return 1 fi # We want to reject all names that Git 2.0.0 rejects. In case # we are running an older version, we explicitly check some # cases that were added to Git after version 1.5.0. This code # aims to support Git version 1.5.0 and newer. # Git 1.7.6.4 and newer rejects the DEL character. if [ `echo "$1"|tr -d '\177'` != "$1" ]; then return 1 fi # Git 1.7.8 and newer rejects refs that start or end with # slash or contain multiple adjacent slashes. case "$1" in /*|*/|*//*) return 1;; esac # Git 1.7.8 and newer rejects refname components that end in # .lock. case "$1" in *.lock/*|*.lock) return 1;; esac # Git 1.8.5 and newer rejects refnames that are made up of the # single character "@". if [ "$1" = "@" ]; then return 1 fi return 0 } get_branch() { silent git symbolic-ref HEAD || \ die "Working on a detached HEAD is unsupported." git symbolic-ref HEAD | sed -e 's,^refs/heads/,,' } verify_branch() { [ ! -d "$GIT_DIR/patches" ] && die "Patches directory doesn't exist, try guilt init" [ ! -d "$GIT_DIR/patches/$branch" ] && die "Branch $branch is not initialized, try guilt init" [ ! -f "$GIT_DIR/patches/$branch/series" ] && die "Branch $branch does not have a series file" [ ! -f "$GIT_DIR/patches/$branch/status" ] && die "Branch $branch does not have a status file" [ -f "$GIT_DIR/patches/$branch/applied" ] && die "Warning: Branch $branch has 'applied' file - guilt is not compatible with stgit" } get_top() { tail -n 1 "$GUILT_DIR/$branch/status" } get_prev() { if [ `wc -l < "$GUILT_DIR/$branch/status"` -gt 1 ]; then tail -n 2 "$GUILT_DIR/$branch/status" | head_n 1 fi } get_full_series() { # ignore all lines matching: # - empty lines # - whitespace only # - optional whitespace followed by '#' followed by more # optional whitespace # also remove comments from end of lines sed -n -e "/^[[:space:]]*\(#.*\)*\$/ ! { s/[[:space:]]*#.*\$// p } " "$series" } get_series() { get_full_series | while read p; do check_guards "$p" && echo "$p" done } # usage: check_guards # Returns 0 if the patch should be pushed check_guards() { get_guards "$1" | while read guard; do g=`echo $guard | sed "s/^[+-]//"` case "$guard" in +*) # Push +guard *only if* guard selected silent grep -F "$g" "$guards_file" || return 1 ;; -*) # Push -guard *unless* guard selected silent grep -F "$g" "$guards_file" && return 1 true ;; esac done # propagate return from subshell return $? } # usage: get_guards get_guards() { awk -v pname="$1" ' ($1 == pname) { guards = ""; for(i=2; i<=NF; i++) { sub(/#[^+-]*/, "", $i); if (length($i)) { if (length(guards)) guards = guards " " $i; else guards = $i; } } print guards; }' < "$series" } # usage: set_guards set_guards() { ( p="$1" shift for x in "$@"; do case "$x" in [+-]*) awk -v pname="$p" -v newguard="$x" '{ if ($1 == pname) print $0 " #" newguard; else print $0; }' < "$series" > "$series.tmp" mv "$series.tmp" "$series" ;; *) echo "'$x' is not a valid guard name" >&2 ;; esac done ) } # usage: unset_guards unset_guards() { ( p="$1" shift for x in "$@"; do awk -v pname="$p" -v oldguard="$x" '{ if ($1 == pname) { guards = ""; for(i=2; i<=NF; i++) { if ($i == "#" oldguard) continue; if (length(guards)) guards = guards " " $i; else guards = $i; } if (length(guards)) print $1 " " guards; else print $1; } else print $0; }' < "$series" > "$series.tmp" mv "$series.tmp" "$series" done ) } # usage: do_make_header do_make_header() { # we should try to work with commit objects only if [ `git cat-file -t "$1"` != "commit" ]; then disp "Hash $1 is not a commit object" >&2 disp "Aborting..." >&2 exit 2 fi git cat-file -p "$1" | awk ' BEGIN{headers=1; firstline=1} /^author / && headers { sub(/^author +/, ""); sub(/ [0-9]* [+-]*[0-9][0-9]*$/, ""); author=$0 } !headers { print if (firstline) { firstline = 0; print "\nFrom: " author; } } /^$/ && headers { headers = 0 } ' } # usage: do_get_patch patchfile do_get_patch() { awk ' BEGIN{} /^(diff |--- )/ {patch = 1} patch == 1 {print $0} END{} ' < "$1" } # usage: do_get_header patchfile do_get_header() { # The complexity arises from the fact that we want to ignore all but the # Subject line of the header, and any empty lines after it, if these # exist, and inject only the Subject line as the first line of the # commit message. # # We also need to strip "from:" lines from the body of the patch # description as these are used by people to manually set the author of # the patch to be different to their local email address and failing to # strip them results in duplicate from: lines in output from guilt # patchbomb. # 1st line prints first encountered Subject line plus empty line. # 2nd line skips standard email/git patch header lines. # 3th line skips "from:" lines throughout the patch description # 4rd line skips tip's additional header lines. # 5th line skips any empty lines thereafter. # 6th line turns off empty line skip upon seeing a non-empty line. # 7th line terminates execution when we encounter the diff awk ' BEGIN{body=0; subj=0} /^Subject:/ && (body == 0 && subj == 0){subj=1; print substr($0, 10) "\n"; next} /^(Subject:|Author:|Date:|commit)/ && (body == 0){next} /^From:/ {body=0; next} /^(Commit-ID:|Gitweb:|AuthorDate:|Committer:CommitDate:)/ && (body == 0){next} /^[ \t\f\n\r\v]*$/ && (body==0){next} /^.*$/ && (body==0){body=1} /^(diff |---$|--- )/{exit} {print $0} END{} ' < "$1" } # usage: do_get_full_header patchfile do_get_full_header() { # 2nd line checks for the begining of a patch # 3rd line outputs the line if it didn't get pruned by the above rules awk ' BEGIN{} /^(diff |---$|--- )/{exit} {print $0} END{} ' < "$1" } # usage: assert_head_check assert_head_check() { if ! head_check refs/patches/$branch/`get_top`; then die "aborting..." fi } # usage: head_check head_check() { # make sure we're not doing funky things to commits that don't # belong to us case "$1" in '') # the expected hash is empty return 0 ;; refs/patches/$branch/) # the expected hash is an invalid rev return 0 ;; esac if [ "`git rev-parse refs/heads/\`git_branch\``" != "`git rev-parse $1`" ]; then disp "Expected HEAD commit $1" >&2 disp " got `git rev-parse refs/heads/\`git_branch\``" >&2 return 1 fi return 0 } # usage: series_insert_patch series_insert_patch() { awk -v top="`get_top`" -v new="$1" \ 'BEGIN{if (top == "") print new;} { print $0; if (top != "" && top == $0) print new; }' "$series" > "$series.tmp" mv "$series.tmp" "$series" } # usage: series_remove_patch series_remove_patch() { grep -v "^$1\([[:space:]].*\)\?$" < "$series" > "$series.tmp" mv "$series.tmp" "$series" } # usage: series_rename_patch series_rename_patch() { # Rename the patch, but preserve comments on the line awk -v old="$1" -v new="$2" ' { if (index($0, old) == 1) print new substr($0, length(old) + 1); else print $0; }' "$series" > "$series.tmp" mv "$series.tmp" "$series" } # usage: series_rename_patch ref_rename_patch() { git update-ref "refs/patches/$branch/$2" `git rev-parse "refs/patches/$branch/$1"` remove_ref "refs/patches/$branch/$1" } # Beware! This is one of the few (only?) places where we modify the applied # file directly # # usage: applied_rename_patch applied_rename_patch() { awk -v old="$1" -v new="$2" \ 'BEGIN{FS=":"} { if ($0 == old) print new; else print; }' "$applied" > "$applied.tmp" mv "$applied.tmp" "$applied" } # usage: remove_patch_refs # reads patch names from stdin remove_patch_refs() { while read pname; do remove_ref "refs/patches/$branch/$pname" done } # usage: pop_many_patches pop_many_patches() { assert_head_check ( cd_to_toplevel # remove the patches refs tail -n $2 < "$applied" | remove_patch_refs git reset --hard "$1" > /dev/null n=`wc -l < "$applied"` n=`expr $n - $2` head_n "$n" < "$applied" > "$applied.tmp" mv "$applied.tmp" "$applied" if [ -z "`get_top 2>/dev/null`" ] && [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ] && ! $old_style_prefix then git symbolic-ref HEAD refs/heads/$branch git update-ref -d refs/heads/$GUILT_PREFIX$branch fi ) } # usage: pop_all_patches pop_all_patches() { pop_many_patches \ `git rev-parse refs/patches/$branch/$(head_n 1 "$applied")^` \ `wc -l < "$applied"` } # usage: remove_ref remove_ref() { ( # does the ref exist? r=`git show-ref --verify -s "$1" 2> /dev/null` [ $? -ne 0 ] && exit 0 # remove it git update-ref -d "$1" "$r" ) } # usage: commit patchname parent commit() { ( TMP_MSG=`get_tmp_file msg` p="$GUILT_DIR/$branch/$1" pname="$1" cd_to_toplevel git diff-files --name-only | (while read n; do git update-index "$n" ; done) # grab a commit message out of the patch do_get_header "$p" > "$TMP_MSG" # make a default commit message if patch doesn't contain one [ ! -s "$TMP_MSG" ] && echo "patch $pname" > "$TMP_MSG" # extract author and date lines from the patch header, and set # GIT_AUTHOR_{NAME,EMAIL,DATE} # prefering Author/AuthorDate lines if available. author_str=`sed -n -e '/^Author:/ { s/^Author: //; p; q; }; /^(diff |---$|--- )/ q' "$p"` if [ -z "$author_str" ]; then author_str=`sed -n -e '/^From:/ { s/^From: //; p; q; }; /^(diff |---$|--- )/ q' "$p"` fi if [ ! -z "$author_str" ]; then GIT_AUTHOR_NAME=`echo $author_str | sed -e 's/ *<.*$//'` export GIT_AUTHOR_NAME="${GIT_AUTHOR_NAME:-" "}" export GIT_AUTHOR_EMAIL="`echo $author_str | sed -e 's/[^<]*//'`" author_date_str=`sed -n -e '/^AuthorDate:/ { s/^AuthorDate: //; p; q; }; /^(diff |---$|--- )/ q' "$p"` if [ -z "$author_date_str" ]; then author_date_str=`sed -n -e '/^Date:/ { s/^Date: //; p; q; }; /^(diff |---$|--- )/ q' "$p"` fi if [ ! -z "$author_date_str" ]; then export GIT_AUTHOR_DATE="$author_date_str" fi fi # `git log -1 --pretty=%ct` doesn't work on Git 1.5.x ct=`git cat-file commit HEAD | awk '/^committer /{ print $(NF-1); exit; }'` if [ $ct -gt `last_modified "$p"` ]; then ct=`expr $ct + 60` if [ $ct -gt `date +%s` ]; then touch "$p" else touch_date $ct "$p" fi fi export GIT_COMMITTER_DATE="`format_last_modified "$p"`" # export GIT_AUTHOR_DATE only if a Date line was unavailable if [ -z "$author_date_str" ]; then export GIT_AUTHOR_DATE="$GIT_COMMITTER_DATE" fi # commit treeish=`git write-tree` commitish=`git commit-tree $treeish -p $2 < "$TMP_MSG"` if $old_style_prefix || git rev-parse --verify --quiet refs/heads/$GUILT_PREFIX$branch >/dev/null then git update-ref HEAD $commitish else git branch $GUILT_PREFIX$branch $commitish git symbolic-ref HEAD refs/heads/$GUILT_PREFIX$branch fi # mark patch as applied git update-ref "refs/patches/$branch/$pname" HEAD rm -f "$TMP_MSG" ) } # usage: push_patch patchname [bail_action] push_patch() { __push_patch_bail=0 ( TMP_LOG=`get_tmp_file log` p="$GUILT_DIR/$branch/$1" pname="$1" bail_action="$2" reject="--reject" assert_head_check cd_to_toplevel # apply the patch if and only if there is something to apply if [ `do_get_patch "$p" | wc -l` -gt 0 ]; then if [ "$bail_action" = abort ]; then reject="" fi git apply -C$guilt_push_diff_context --index \ $reject "$p" > /dev/null 2> "$TMP_LOG" __push_patch_bail=$? if [ $__push_patch_bail -ne 0 ]; then cat "$TMP_LOG" >&2 if [ "$bail_action" = "abort" ]; then rm -f "$TMP_LOG" "$TMP_MSG" return $__push_patch_bail fi fi fi commit "$pname" HEAD echo "$pname" >> "$applied" rm -f "$TMP_LOG" ) # sub-shell funky-ness __push_patch_bail=$? return $__push_patch_bail } # usage: must_commit_first must_commit_first() { git update-index --refresh --unmerged -q > /dev/null [ `git diff-files | wc -l` -eq 0 ] || return $? [ `git diff-index HEAD | wc -l` -eq 0 ] return $? } # usage: fold_patch patchname fold_patch() { set -- "$1" "`get_top`" assert_head_check push_patch "$1" # merge the patch headers ( pcur="$GUILT_DIR/$branch/$2" pnext="$GUILT_DIR/$branch/$1" TMP_CUR=`get_tmp_file diff-cur` TMP_NEXT=`get_tmp_file diff-next` TMP_DIFF=`get_tmp_file diff` do_get_full_header "$pcur" > "$TMP_CUR" do_get_full_header "$pnext" > "$TMP_NEXT" do_get_patch "$pcur" > "$TMP_DIFF" case "`stat -c %s \"$TMP_CUR\"`,`stat -c %s \"$TMP_NEXT\"`" in *,0) # since the new patch header is empty, we # don't have to do anything ;; 0,*) # current is empty; new is not mv "$pcur" "$pcur~" cat "$TMP_NEXT" > "$pcur" cat "$TMP_DIFF" >> "$pcur" ;; *,*) mv "$pcur" "$pcur~" cat "$TMP_CUR" > "$pcur" echo >> "$pcur" echo "Header from folded patch '$1':" >> "$pcur" echo >> "$pcur" cat "$TMP_NEXT" >> "$pcur" cat "$TMP_DIFF" >> "$pcur" ;; esac rm -f "$TMP_CUR" "$TMP_NEXT" "$TMP_DIFF" ) __refresh_patch "$2" HEAD^^ 2 "" "" series_remove_patch "$1" } # usage: refresh_patch patchname gengitdiff incldiffstat refresh_patch() { __refresh_patch "$1" HEAD^ 1 "$2" "$3" } # usage: __refresh_patch patchname commitish number_of_commits gengitdiff # incldiffstat __refresh_patch() { assert_head_check ( TMP_DIFF=`get_tmp_file diff` cd_to_toplevel p="$GUILT_DIR/$branch/$1" pname="$1" # get the patch header do_get_full_header "$p" > "$TMP_DIFF" [ ! -z "$4" ] && diffopts="-C -M --find-copies-harder" if [ -n "$5" -o $diffstat = "true" ]; then ( echo "---" git diff --stat $diffopts "$2" echo "" ) >> "$TMP_DIFF" fi # get the new patch git diff --binary $diffopts "$2" >> "$TMP_DIFF" # move the new patch in mv "$p" "$p~" mv "$TMP_DIFF" "$p" # commit commit "$pname" "HEAD~$3" # drop folded patches N=`expr "$3" - 1` # remove the patches refs tail -n $N < "$applied" | remove_patch_refs n=`wc -l < "$applied"` n=`expr $n - $N` head_n "$n" < "$applied" > "$applied.tmp" mv "$applied.tmp" "$applied" ) } # usage: munge_hash_range # # this means: # - one commit # .. - hash until head (excludes hash, includes head) # .. - until hash (includes hash) # .. - from hash to hash (inclusive) # # The output of this function is suitable to be passed to "git rev-list" munge_hash_range() { case "$1" in *..*..*|*\ *) # double .. or space is illegal return 1;; ..*) # e.g., "..v0.10" echo ${1#..};; *..) # e.g., "v0.19.." echo ${1%..}..HEAD;; *..*) # e.g., "v0.19-rc1..v0.19" echo ${1%%..*}..${1#*..};; ?*) # e.g., "v0.19" echo $1^..$1;; *) # empty return 1;; esac return 0 } # usage: get_tmp_file [] # # Get a unique filename and create the file in a non-racy way get_tmp_file() { while true; do mktemp $2 "/tmp/guilt.$1.XXXXXXXXXXXXXXX" && break done } # usage: guilt_hook guilt_hook() { __hookname="$1" [ ! -x "$GIT_DIR/hooks/guilt/$__hookname" ] && return 0 shift "$GIT_DIR/hooks/guilt/$__hookname" "$@" return $? } # # source the command # . "$cmd" # # Some constants # # used for: git apply -C guilt_push_diff_context=1 # default diffstat value: true or false DIFFSTAT_DEFAULT="false" # default guilt.reusebranch value: true or false REUSE_BRANCH_DEFAULT="false" # Prefix for guilt branches. GUILT_PREFIX=guilt/ # # Parse any part of .git/config that belongs to us # # generate diffstat? diffstat=`git config --bool guilt.diffstat` [ -z "$diffstat" ] && diffstat=$DIFFSTAT_DEFAULT # reuse Git branch? reuse_branch=`git config --bool guilt.reusebranch` [ -z "$reuse_branch" ] && reuse_branch=$REUSE_BRANCH_DEFAULT # # The following gets run every time this file is source'd # GUILT_DIR="$GIT_DIR/patches" # To make it harder to accidentally do "git push" with a guilt patch # applied, "guilt push" changes branch from e.g. "master" to # "guilt/master". Set $git_branch to the full branch name, and # $branch to the abbreviated name that the user sees most of the time. # Note: old versions of guilt did not add the "guilt/" prefix. This # code handles that case as well. The prefix will be added when you # have no patches applied and do a "guilt push". raw_git_branch=`get_branch` branch=`echo "$raw_git_branch" | sed -e 's,^'$GUILT_PREFIX',,'` git_branch() { if $old_style_prefix then echo $branch elif [ -z "`get_top 2>/dev/null`" ] then echo $branch else echo $GUILT_PREFIX$branch fi } # most of the time we want to verify that the repo's branch has been # initialized, but every once in a blue moon (e.g., we want to run guilt init), # we must avoid the checks if [ -z "$DO_NOT_CHECK_BRANCH_EXISTENCE" ]; then verify_branch # do not check the status file format (guilt repair needs this, # otherwise nothing can do what's necessary to bring the repo into a # useable state) if [ -z "$DO_NOT_CHECK_STATUS_FILE_FORMAT" ]; then [ -s "$GIT_DIR/patches/$branch/status" ] && grep "^[0-9a-f]\{40\}:" "$GIT_DIR/patches/$branch/status" > /dev/null && die "Status file appears to use old format, try guilt repair --status" fi fi # very useful files series="$GUILT_DIR/$branch/series" applied="$GUILT_DIR/$branch/status" guards_file="$GUILT_DIR/$branch/guards" # determine a pager to use for anything interactive (fall back to more) pager="more" [ ! -z "$PAGER" ] && pager="$PAGER" UNAME_S=`uname -s` if [ -r "$GUILT_PATH/os.$UNAME_S" ]; then . "$GUILT_PATH/os.$UNAME_S" elif [ -r "$GUILT_PATH/../lib/guilt/os.$UNAME_S" ]; then . "$GUILT_PATH/../lib/guilt/os.$UNAME_S" else die "Unsupported operating system: $UNAME_S" fi if [ -n "`get_top 2>/dev/null`" ]; then # If there is at least one pushed patch, we set # old_style_prefix according to how it was pushed. It is only # possible to change the prefix style while no patches are # applied. if [ "$branch" = "$raw_git_branch" ]; then old_style_prefix=true else old_style_prefix=false fi else old_style_prefix="$reuse_branch" fi _main "$@" guilt-0.36/guilt-add000077500000000000000000000004061262071220700143650ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="..." if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -lt 1 ]; then usage fi exec git add -- "$@" } guilt-0.36/guilt-applied000077500000000000000000000007611262071220700152570ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-c]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case $# in 0) # just output the regular series-style applied list cat "$applied" ;; 1) if [ "$1" != "-c" ]; then usage fi cat "$applied" | while read pname; do git show-ref refs/patches/$branch/$pname | sed -e "s,refs/patches/$branch/,," done ;; *) usage ;; esac } guilt-0.36/guilt-branch000077500000000000000000000021051262071220700150700ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # USAGE="[]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi if [ $# -gt 1 ]; then usage fi _main() { # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi if [ $# -eq 0 ]; then newbranch="$branch-`date +%Y-%m-%d`" else newbranch="$1" fi if [ -e "$GUILT_DIR/$newbranch" ]; then die "Patch directory for branch \"$newbranch\" already exists." fi cat "$applied" | while read n; do git update-ref "refs/patches/$newbranch/$n" \ `git rev-parse "refs/patches/$branch/$n"` "" done if $old_style_prefix || [ -z "`get_top 2>/dev/null`" ] then newgitbranch="$newbranch" else git update-ref "refs/heads/$newbranch" "refs/heads/$branch" "" newgitbranch="$GUILT_PREFIX$newbranch" fi git branch "$newgitbranch" git checkout "$newgitbranch" mkdir -p "$GUILT_DIR/`dirname $newbranch`" # copy the patch dir cp_a "$GUILT_DIR/$branch" "$GUILT_DIR/$newbranch" # copy the refs } guilt-0.36/guilt-commit000077500000000000000000000026231262071220700151300ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2008-2013 # USAGE="-n | -a | --all" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case "$1" in -a|--all) [ $# -gt 1 ] && usage pat_commit="1,\$p" pat_keep="" ;; -n) [ $# -gt 2 ] && usage [ "$2" -lt 0 ] && die "Must specify a number of patches to commit" [ "$2" -eq 0 ] && exit 0 pat_commit="1,$2p" pat_keep="`expr "$2" + 1`,\$p" ;; *) usage ;; esac # if nothing's applied, exit [ `wc -l < "$applied"` -eq 0 ] && exit 0 # remove patch refs for what's being committed, and update series sed -n -e "${pat_commit}" "$applied" | while read pname; do # update the base branch to the last committed patch $old_style_prefix || git update-ref refs/heads/$branch \ refs/patches/$branch/$pname series_remove_patch "$pname" echo "$pname" | remove_patch_refs done # update $applied to include only the patches we're keeping sed -n -e "${pat_keep}" "$applied" > "$applied.tmp" mv "$applied.tmp" "$applied" # if we removed the last patch, switch back to the base branch if [ `wc -l < "$applied"` -eq 0 ] && [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ] && ! $old_style_prefix then git update-ref refs/heads/$branch refs/heads/$GUILT_PREFIX$branch git symbolic-ref HEAD refs/heads/$branch git update-ref -d refs/heads/$GUILT_PREFIX$branch fi } guilt-0.36/guilt-delete000077500000000000000000000013771262071220700151070ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-f] " if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case $# in 1) # just patchname force= ;; 2) # -f patchname if [ "$1" != "-f" ]; then usage fi force=t shift ;; *) usage ;; esac patch="$1" if [ -z "$patch" ]; then die "You must specify a patch to delete" fi if [ ! -f "$GUILT_DIR/$branch/$patch" ]; then die "Patch $patch does not exist." fi p=`grep -e "^$patch$" < "$applied"` if [ ! -z "$p" ] ; then die "Cannot delete an applied patch" fi series_remove_patch "$patch" guilt_hook "delete" "$patch" [ ! -z "$force" ] && rm -f "$GUILT_DIR/$branch/$patch" exit 0 } guilt-0.36/guilt-diff000077500000000000000000000006701262071220700145500ustar00rootroot00000000000000#!/bin/sh # # Copyright (C) Josef 'Jeff' Sipek, 2007-2013 # USAGE="[-z] [...]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -ne 0 ]; do case "$1" in -z) working_tree=t ;; -* | --*) usage ;; *) break ;; esac shift done PREV=HEAD^ [ -z "`get_top`" ] && PREV= [ ! -z "$working_tree" ] && PREV= git diff --binary $PREV -- "$@" } guilt-0.36/guilt-export000077500000000000000000000011621262071220700151560ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Pierre Habouzit, 2007 # USAGE="[]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -gt 1 ]; then usage fi target_dir=${1:-"patches"} if [ -e "$target_dir" ]; then die "Specified directory already exists" fi trap "rm -rf \"$target_dir\"" 0 mkdir -p "$target_dir" get_full_series | tee "$target_dir/series" | while read p; do silent mkdir -p "`dirname $target_dir/$p`" || true cp "$GUILT_DIR/$branch/$p" "$target_dir/$p" done trap - 0 disp "Series exported to \"$target_dir\" sucessfully." } guilt-0.36/guilt-files000077500000000000000000000024651262071220700147460ustar00rootroot00000000000000#!/bin/sh # # Copyright (C) 2007 Yasushi SHOJI # USAGE="[-v] [-a] [-l]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { opt_verbose= opt_all= opt_labels= while case "$#" in 0) break ;; esac do case "$1" in -v) opt_verbose=t ;; -a) opt_all=t ;; -l) opt_labels=t ;; *) usage ;; esac shift done top_patch=`get_top` IFS=: if [ -n "$opt_all" ]; then cat "$applied" else tail -n 1 "$applied" fi | while read patch; do obj=`git rev-parse refs/patches/$branch/$patch` # shamelessly taken from Quilt(quilt/quilt/files) if [ -n "$opt_all" ] && [ -n "$opt_verbose" ] && [ -z "$opt_labels" ]; then disp "$patch" fi if [ -n "$opt_verbose" ] && [ -z "$opt_labels" ]; then use_status=yes fi IFS=' ' ( if [ "$top_patch" != "$patch" ]; then git diff-tree -r $obj^ $obj else git diff-index HEAD^ fi ) | tr '\t' ' '| while read omode nmode osha1 nsha1 st file; do if [ -n "$opt_labels" ]; then if [ -n "$opt_verbose" ]; then _disp "[$patch] " else _disp "$patch " fi fi if [ -z "$use_status" ]; then disp "$file" else case $st in A) status="+" ;; D) status="-" ;; *) status=" " ;; esac disp "$status $file" fi done IFS=: done } guilt-0.36/guilt-fold000077500000000000000000000015651262071220700145700ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-k] " if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ "$1" = "-k" ]; then keep=t shift fi if [ $# -ne 1 ]; then usage fi patch="$1" if [ -z "$patch" ]; then die "No patch name supplied." fi # make sure it is a file if [ ! -f "$GUILT_DIR/$branch/$patch" ]; then die "Patch $patch does not exist." fi # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi # make sure it is not applied pline=`cat "$applied" | grep -e "^$patch$"` if [ ! -z "$pline" ]; then die "Patch is applied. Pop the patch first." fi fold_patch "$patch" # back it up just in case :) [ -z "$keep" ] && mv "$GUILT_DIR/$branch/$patch" "$GUILT_DIR/$branch/$patch~" } guilt-0.36/guilt-fork000077500000000000000000000022641262071220700146020ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # USAGE="[]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -gt 1 ]; then usage fi patch=`get_top` if [ -z "$patch" ]; then die "No patches are applied." fi # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi # Rename patches smartly if [ $# -eq 1 ]; then newpatch="$1" else base=$(echo "$patch" \ | sed -r -e 's:(\.diff?|\.patch)$::') num=$(echo "$base" | sed -nre 's:.*-([0-9]+)$:\1:'p) [ -n "$num" ] || num=1 newpatch="${base%-$num}-$(($num+1))${patch#$base}" fi if ! valid_patchname "$newpatch"; then die "The specified patch name is invalid according to git-check-ref-format(1)." fi if [ -e "$GUILT_DIR/$branch/$newpatch" ]; then die "Patch \"$newpatch\" already exists. Choose another name." fi # copy the patch cp "$GUILT_DIR/$branch/$patch" "$GUILT_DIR/$branch/$newpatch" # replace the series & applied file references series_rename_patch "$patch" "$newpatch" applied_rename_patch "$patch" "$newpatch" ref_rename_patch "$patch" "$newpatch" } guilt-0.36/guilt-graph000077500000000000000000000035221262071220700147400ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # USAGE="[-x exclude-pattern]... []" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { cache="$GUILT_DIR/$branch/.graphcache.$$" xclude="$GUILT_DIR/$branch/.graphexclude.$$" trap "rm -rf \"$cache\" \"$xclude\"" 0 mkdir "$cache" >"$xclude" while [ $# -gt 0 ]; do if [ "$1" = "-x" ] && [ $# -ge 2 ]; then echo "$2" >> "$xclude" shift shift else break fi done if [ $# -gt 1 ]; then usage fi patchname="$1" bottompatch=$(head_n 1 < "$applied") if [ -z "$bottompatch" ]; then echo "No patch applied." >&2 exit 1 fi base=`git rev-parse "refs/patches/${branch}/${bottompatch}^"` if [ -z "$patchname" ]; then top=`git rev-parse HEAD` else top=`grep "^$patchname$" "$applied"` if [ -z "$top" ]; then die "Cannot find patch '$patchname'. Is it applied?" fi fi getfiles() { git diff-tree -r "$1^" "$1" | cut -f2 } disp "digraph G {" current="$top" safebranch=`echo "$branch"|sed 's%/%\\\\/%g'` while [ "$current" != "$base" ]; do pname=`git show-ref | sed -n -e " /^$current refs\/patches\/$safebranch/ { s:^$current refs/patches/$branch/:: p q }"` [ -z "$pname" ] && pname="?" pname="`printf \"%s\" \"$pname\" | sed 's/\"/\\\\\"/g'`" disp "# checking rev $current" disp " \"$current\" [label=\"$pname\"]" # new "hash table" rm -f "$cache/dep" touch "$cache/dep" getfiles $current | grep -v -f "$xclude" | while read f; do # hash the filename fh=`echo "$f" | sha1 | cut -d' ' -f1` if [ -e "$cache/$fh" ]; then # ok, something already touched this file before us cat "$cache/$fh" >> "$cache/dep" fi echo "$current" > "$cache/$fh" done sort -u "$cache/dep" | while read h; do disp " \"$h\" -> \"$current\"; // ?" done current=`git rev-parse $current^` done disp "}" } guilt-0.36/guilt-guard000077500000000000000000000026441262071220700147450ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Eric Lesh, 2007 # USAGE="[-l | --list | -n | --none | [] [(+|-)...]]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi print_guards() { guards=`get_guards "$1"` echo "$1: $guards" } _main() { if [ "$1" = "-l" -o "$1" = "--list" ]; then get_full_series | while read patch; do print_guards "$patch" done exit 0 elif [ "$1" = "-n" -o "$1" = "--none" ]; then patch="$2" if [ -z "$patch" ]; then patch=`get_top` fi unset_guards "$patch" `get_guards "$patch"` exit 0 fi case $# in 0) if [ ! -s "$applied" ]; then die "No patches applied." fi print_guards `get_top` ;; 1) if [ -z $(printf %s "$1" | grep -e '^[+-]') ]; then if [ -z $(get_full_series | grep -e "^$1\$") ]; then die "Patch $1 does not exist." else print_guards "$1" fi else patch=`get_top` if [ -z "$patch" ]; then die "You must specify a patch." fi unset_guards "$patch" `get_guards "$patch"` set_guards "$patch" "$1" fi ;; *) if [ -z $(printf %s "$1" | grep -e '^[+-]') ]; then if [ -z $(get_full_series | grep -e "^$1\$") ]; then die "Patch $1 does not exist." else patch="$1" fi shift else patch=`get_top` if [ -z "$patch" ]; then die "You must specify a patch." fi fi unset_guards "$patch" `get_guards "$patch"` set_guards "$patch" "$@" ;; esac } guilt-0.36/guilt-header000077500000000000000000000037661262071220700151010ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-eE] []" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case $# in 0) patch=`get_top` ;; 1) if [ "$1" = "-e" ]; then edit=t patch=`get_top` elif [ "$1" = "-E" ]; then edit=t full=t patch=`get_top` else patch="$1" fi ;; 2) if [ "$1" = "-e" ]; then edit=t patch="$2" elif [ "$1" = "-E" ]; then edit=t full=t patch="$2" else usage fi ;; esac # are there any patches applied? [ -z "$patch" ] && die "No patches applied." # check that patch exists in the series TMP_FULL_SERIES=`get_tmp_file series` get_full_series > "$TMP_FULL_SERIES" found_patch= while read x; do if [ "$x" = "$patch" ]; then found_patch="$patch" break fi done < "$TMP_FULL_SERIES" if [ -z "$found_patch" ]; then TMP_MATCHES=`get_tmp_file series` grep "$patch" < "$TMP_FULL_SERIES" > "$TMP_MATCHES" nr=`wc -l < $TMP_MATCHES` if [ $nr -gt 1 ]; then echo "$patch does not uniquely identify a patch. Did you mean any of these?" >&2 sed 's/^/ /' "$TMP_MATCHES" >&2 rm -f "$TMP_MATCHES" "$TMP_FULL_SERIES" exit 1 elif [ $nr -eq 0 ]; then rm -f "$TMP_MATCHES" "$TMP_FULL_SERIES" die "Patch $patch is not in the series" fi found_patch=`cat $TMP_MATCHES` rm -f "$TMP_MATCHES" fi rm -f "$TMP_FULL_SERIES" patch="$found_patch" # FIXME: warn if we're editing an applied patch TMP_MSG=`get_tmp_file msg` TMP_DIFF=`get_tmp_file diff` if [ -z "$edit" ]; then do_get_header "$GUILT_DIR/$branch/$patch" else if [ -n "$full" ]; then git_editor "$GUILT_DIR/$branch/$patch" exit $? fi do_get_full_header "$GUILT_DIR/$branch/$patch" > "$TMP_MSG" do_get_patch "$GUILT_DIR/$branch/$patch" > "$TMP_DIFF" git_editor "$TMP_MSG" mv "$GUILT_DIR/$branch/$patch" "$GUILT_DIR/$branch/$patch~" ( cat "$TMP_MSG" cat "$TMP_DIFF" ) > "$GUILT_DIR/$branch/$patch" fi rm -f "$TMP_MSG" "$TMP_DIFF" } guilt-0.36/guilt-help000077500000000000000000000010771262071220700145720ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # DO_NOT_CHECK_BRANCH_EXISTENCE=1 USAGE="[ | ]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case $# in 0) page="guilt" ;; 1) case "$1" in guilt*) # guilt --help # guilt-cmd --help # guilt-help guilt-foo page="$1" ;; *) # guilt-help foo page="guilt-$1" ;; esac ;; *) usage ;; esac MANDIR=`dirname $0`/../man MANDIR=`(cd "$MANDIR"; pwd)` exec man -M "$MANDIR" "$page" } guilt-0.36/guilt-import000077500000000000000000000021361262071220700151510ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # USAGE="[-P ] " if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { case "$1" in -P) newname="$2" oldname="$3" ;; *) newname=`basename "$1"` oldname="$1" ;; esac if [ $# -lt 1 ] || [ $# -gt 3 ] || [ -z "$newname" ] || [ -z "$oldname" ]; then usage fi # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi if [ ! -e "$oldname" ]; then die "Specified file does not exist." fi if [ -e "$GUILT_DIR/$branch/$newname" ]; then die "Already tracking a patch under that name." fi if ! valid_patchname "$newname"; then die "The specified patch name is invalid according to git-check-ref-format(1)." fi # create any directories as needed mkdir_dir=`dirname "$GUILT_DIR/$branch/$newname"` [ "$mkdir_dir" != "$GUILT_DIR/$branch" ] && mkdir -p "$mkdir_dir" cp "$oldname" "$GUILT_DIR/$branch/$newname" # insert the patch into the series file series_insert_patch "$newname" } guilt-0.36/guilt-import-commit000077500000000000000000000046561262071220700164500ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # USAGE="[ | ..[] | ..]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -ne 1 ] || [ -z "$1" ]; then die "You must specify a range of commits" fi rhash=`munge_hash_range $1` # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi disp "About to begin conversion..." >&2 disp "Current head: `git rev-parse \`git_branch\``" >&2 for rev in `git rev-list $rhash`; do s=`git log --no-decorate --pretty=oneline -1 $rev | cut -c 42-` # Try to convert the first line of the commit message to a # valid patch name. fname=`printf %s "$s" | sed -e "s/&/and/g" -e "s/[ :]/_/g" -e "s,[/\\],-,g" \ -e "s/['\\[{}]//g" -e 's/]//g' -e 's/\*/-/g' \ -e 's/\?/-/g' -e 's/\.\.\.*/./g' -e 's/^\.//' \ -e 's/\.patch$//' -e 's/\.$//' | tr A-Z a-z` if ! valid_patchname "$fname"; then # Try harder to make it a legal commit name by # removing all but a few safe characters. fname=`echo $fname|tr -d -c _a-zA-Z0-9---/\\n` fi if ! valid_patchname "$fname"; then # If we failed to derive a legal patch name, use the # name "x". (If this happens, we likely have to # append a suffix to make the name unique.) fname=x fi disp "Converting `echo $rev | cut -c 1-8` as $fname" mangle_prefix=1 fname_base=$fname while [ -f "$GUILT_DIR/$branch/$fname.patch" ]; do fname="$fname_base-$mangle_prefix" mangle_prefix=`expr $mangle_prefix + 1` disp "Patch under that name exists...trying '$fname'" done fname="$fname".patch ( do_make_header $rev echo "" git diff --binary $rev^..$rev ) > "$GUILT_DIR/$branch/$fname" # FIXME: grab the GIT_AUTHOR_DATE from the commit object and set the # timestamp on the patch # insert the patch name into the series file series_insert_patch $fname # Only reset if the commit was on this branch if head_check $rev 2> /dev/null; then # BEWARE: "git reset" ahead! Is there a way to verify that # we really created a patch? - We don't want to lose any # history. git reset --hard $rev^ > /dev/null elif [ -z "$warned" ]; then disp "Warning: commit $rev is not the HEAD...preserving commit" >&2 disp "Warning: (this message is displayed only once)" >&2 warned=t fi done disp "Done." >&2 disp "Current head: `git rev-parse \`git_branch\``" >&2 } guilt-0.36/guilt-init000077500000000000000000000014441262071220700146030ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # DO_NOT_CHECK_BRANCH_EXISTENCE=1 USAGE="" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while case $# in 0) break ;; esac; do case $1 in -a|-n) echo "Autotagging is no longer supported" >&2 ;; *) usage ;; esac shift done if [ -d "$GUILT_DIR/$branch" ]; then die "Branch $branch appears to be already initialized (GIT_DIR=$GIT_DIR)" fi [ ! -d "$GUILT_DIR" ] && mkdir "$GUILT_DIR" mkdir -p "$GUILT_DIR/$branch" touch "$GUILT_DIR/$branch/series" touch "$GUILT_DIR/$branch/status" mkdir -p "$GIT_DIR/hooks/guilt" cat > "$GIT_DIR/hooks/guilt/delete" < echo "Removing patch '\$1'..." EOF } guilt-0.36/guilt-new000077500000000000000000000034241262071220700144310ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-f] [-s] [-e|-m message] " if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -gt 0 ] ; do case "$1" in -f) force=t ;; -s) signoff=t ;; -e) edit=t if [ ! -z "$msg" ]; then usage fi ;; -m) if [ $# -eq 1 ]; then usage fi msg="$2" shift if [ ! -z "$edit" ]; then usage fi ;; *) if [ ! -z "$patch" ]; then usage fi patch="$1" ;; esac shift done if [ -z "$patch" ]; then die "You must specify a patch name" fi if [ -f "$GUILT_DIR/$branch/$patch" ]; then die "patch '$patch' already exist" fi iidx=`wc -l < "$applied"` # make sure that there are no unapplied changes if [ -z "$force" ] && ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi if ! valid_patchname "$patch"; then disp "Patchname is invalid." >&2 die "It must follow the rules in git-check-ref-format(1)." fi # create any directories as needed mkdir_dir=`dirname "$GUILT_DIR/$branch/$patch"` [ "$mkdir_dir" != "$GUILT_DIR/$branch" ] && mkdir -p "$mkdir_dir" # create the file with the right contents ( # did we get a message with -m ? [ ! -z "$msg" ] && printf "$msg\n\n" # add a sign-off-by (-s) [ "$signoff" = "t" ] && printf "Signed-off-by: `git var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`\n\n" ) >> "$GUILT_DIR/$branch/$patch" # edit -e ? [ "$edit" = "t" ] && git_editor "$GUILT_DIR/$branch/$patch" if [ ! -z "$force" ]; then ( cd_to_toplevel git diff --binary HEAD >> "$GUILT_DIR/$branch/$patch" ) fi # insert the patch name into the series file series_insert_patch "$patch" # apply the patch echo "$patch" >> "$applied" commit "$patch" HEAD } guilt-0.36/guilt-next000077500000000000000000000007051262071220700146150ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-p|--path]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -ne 0 ]; do case "$1" in -p|--path) path="$GUILT_DIR/$branch/" ;; *) usage ;; esac shift done n=`wc -l < "$applied"` n=$(($n + 1)) p=`get_series | awk "{ if (NR == $n) print \\$0}"` if [ -n "$p" ]; then disp $path$p fi } guilt-0.36/guilt-patchbomb000077500000000000000000000046231262071220700156010ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # DO_NOT_CHECK_BRANCH_EXISTENCE=1 USAGE="[-n] [-s] [--in-reply-to ] [--git] [--subject-prefix ] [ | ..[] | ..]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { TMP_FILE=`get_tmp_file file` while [ $# -gt 0 ]; do case "$1" in -n) do_not_send=t ;; -s) no_sign_off=t ;; --subject-prefix) subject_prefix="$2" shift ;; --in-reply-to) reply_to="$2" shift ;; --git) gitdiff=t ;; *) break ;; esac shift done r=`munge_hash_range "$1"` if [ $? -ne 0 ]; then usage fi # display the list of commits to be sent as patches git log --no-decorate --pretty=oneline "$r" | cut -c 1-8,41- | $pager _disp "Are these what you want to send? [Y/n] " read n if [ "$n" = "n" ] || [ "$n" = "N" ]; then die "Aborting..." fi dir=`get_tmp_file patchbomb -d` disp "Using '$dir' as temporary directory" # more than one patch? if [ `git rev-list "$r" | wc -l` -gt 1 ]; then format_opts="-n" # include "n/m" in the subject send_opts="--no-chain-reply-to --compose" # compose fi [ ! -z "$gitdiff" ] && format_opts="$format_opts -C -M --find-copies-harder" [ -z "$no_sign_off" ] && format_opts="$format_opts -s" if [ -z "$subject_prefix" ]; then git format-patch $format_opts -o $dir "$r" else git format-patch $format_opts --subject-prefix="$subject_prefix" -o $dir "$r" fi # get the to/cc addresses _disp "Enter all the To: email addresses (separated by space): " read rawto _disp "Enter all the Cc: email addresses (separated by space): " read rawcc # convert list of email addresses to command line options to_opts="" for rt in $rawto; do to_opts="$to_opts --to $rt" done for rc in $rawcc; do to_opts="$to_opts --cc $rc" done opts="$send_opts $to_opts" # last possible point to abort! _disp "Proceed with patchbomb (this is the last chance to abort)? [y/N] " read n if [ "$n" != "y" ] && [ "$n" != "Y" ]; then die "Aborting..." fi # ...and off they go. cmd="git send-email" if [ ! -z "$do_not_send" ]; then disp "-n passed: not sending, command that would be executed:" >&2 cmd="echo git send-email" fi if [ -z "$reply_to" ]; then $cmd $opts $dir else $cmd --in-reply-to "$reply_to" $opts $dir fi # cleanup? _disp "Delete temporary directory? [Y/n] " read n [ "$n" = "n" ] || [ "$n" = "N" ] && exit 0 rm -rf $dir } guilt-0.36/guilt-pop000077500000000000000000000040211262071220700144300ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-f] [-a | --all | -n | ]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -gt 0 ]; do case "$1" in -f) force=t ;; -a|--all) all=t ;; -n) num=t ;; *) break ;; esac shift done # "guilt-pop" or "guilt-pop foo" or "guilt-pop -n foo" if [ -z "$all" ] && [ $# -gt 1 ]; then usage fi # "guilt-pop -n foo" if [ ! -z "$num" ]; then if [ $# -gt 1 ] || [ $# -eq 0 ]; then usage fi fi # "guilt-pop -a" if [ ! -z "$all" ] && [ $# -gt 0 ]; then usage fi patch="$1" [ ! -z "$all" ] && patch="-a" # Treat "guilt pop" as "guilt pop -n 1". if [ -z "$patch" ]; then patch=1 num=t fi if [ ! -s "$applied" ]; then disp "No patches applied." if [ "$patch" = "-a" ]; then exit 0 else exit 1 fi elif [ "$patch" = "-a" ]; then # we are supposed to pop all patches sidx=`wc -l < "$applied"` eidx=0 elif [ ! -z "$num" ]; then # we are supposed to pop a set number of patches [ "$patch" -lt 0 ] && die "Invalid number of patches to pop." sidx=`wc -l < "$applied"` eidx=`expr $sidx - $patch` # catch underflow [ $eidx -lt 0 ] && eidx=0 [ $eidx -eq $sidx ] && die "No patches requested to be removed." else # we're supposed to pop only up to a patch, make sure the patch is # in the series eidx=`cat "$applied" | grep -ne "^$patch$" | cut -d: -f 1` if [ -z "$eidx" ]; then die "Patch $patch is not in the series/is not applied" fi eidx=`expr $eidx - 1` sidx=`wc -l < "$applied"` fi # make sure that there are no unapplied changes # if we are forcing the pop, reset first if [ ! -z "$force" ]; then git reset --hard elif ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi l=`awk "BEGIN{n=0}(n==$eidx){print \\$0; exit}{n=n+1}END{}" < "$applied"` pop_many_patches `git rev-parse refs/patches/$branch/$l^` `expr $sidx - $eidx` p=`get_top` [ ! -z "$p" ] && disp "Now at $p." || disp "All patches popped." } guilt-0.36/guilt-prev000077500000000000000000000005711262071220700146140ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-p|--path]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -ne 0 ]; do case "$1" in -p|--path) path="$GUILT_DIR/$branch/" ;; *) usage ;; esac shift done p=`get_prev` if [ -n "$p" ]; then disp $path$p fi } guilt-0.36/guilt-push000077500000000000000000000047571262071220700146310ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[ -f ] [-a | --all | -n | ]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { abort_flag="abort" while [ $# -gt 0 ]; do case "$1" in -f) abort_flag="" ;; -a|--all) all=t ;; -n) num=t ;; *) break ;; esac shift done if [ $# -gt 1 ]; then usage fi # "guilt-push" or "guilt-push foo" if [ -z "$all" ] && [ $# -gt 1 ]; then usage fi # "guilt-push -n foo" if [ ! -z "$num" ]; then if [ $# -gt 1 ] || [ $# -eq 0 ]; then usage fi fi # "guilt-push -a" if [ ! -z "$all" ] && [ $# -gt 0 ]; then usage fi patch="$1" [ ! -z "$all" ] && patch="-a" # Treat "guilt push" as "guilt push -n 1". if [ -z "$patch" ]; then patch=1 num=t fi if [ "$patch" = "-a" ]; then # we are supposed to push all patches, get the last one out of # series eidx=`get_series | wc -l` if [ $eidx -eq 0 ]; then die "There are no patches to push." fi elif [ ! -z "$num" ]; then # we are supposed to push a set number of patches [ "$patch" -lt 0 ] && die "Invalid number of patches to push." eidx=`get_series | wc -l` # calculate end index from current tidx=`wc -l < "$applied"` tidx=`expr $tidx + $patch` # clamp to minimum [ $tidx -lt $eidx ] && eidx=$tidx else # we're supposed to push only up to a patch, make sure the patch is # in the series eidx=`get_series | grep -ne "^$patch\$" | cut -d: -f1` if [ -z "$eidx" ]; then die "Patch $patch is not in the series or is guarded." fi fi # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." fi # now, find the starting patch sidx=`wc -l < "$applied"` sidx=`expr $sidx + 1` # do we actually have to push anything? if [ "$sidx" -gt "$eidx" ]; then if [ "$sidx" -le "`get_series | wc -l`" ]; then disp "Patch is already applied." else disp "File series fully applied, ends at patch `get_series | tail -n 1`" fi if [ -n "$all" ]; then exit 0 else exit 1 fi fi get_series | sed -n -e "${sidx},${eidx}p" | while read p do disp "Applying patch..$p" if [ ! -f "$GUILT_DIR/$branch/$p" ]; then die "Patch $p does not exist. Aborting." fi push_patch "$p" $abort_flag # bail if necessary if [ $? -eq 0 ]; then disp "Patch applied." elif [ -z "$abort_flag" ]; then die "Patch applied with rejects. Fix it up, and refresh." else die "To force apply this patch, use 'guilt push -f'" fi done } guilt-0.36/guilt-rebase000077500000000000000000000047731262071220700151110ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2007-2013 # # Heavily based on the long removed sh version of git-cherry # USAGE="" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { disp "Beware, rebase is currently EXPERIMENTAL." disp "In other words, it might eat your patches." _disp "Do you wish to proceed? [y/N] " read n if [ "$n" != "y" -a "$n" != "Y" ]; then disp "Aborted." exit 0 fi case "$#" in 1) upstream=`git rev-parse --verify "$1"` && ours=`git rev-parse --verify HEAD` || usage limit="$upstream" ;; *) usage ;; esac # make sure that there are no unapplied changes if ! must_commit_first; then die "Uncommited changes detected. Refresh first." elif [ `wc -l < "$applied"` -eq 0 ]; then die "Nothing to rebase. First, you need to push patches onto the stack." fi # Note that these list commits in reverse order; # not that the order in inup matters... inup=`git rev-list ^$ours $upstream` && ours=`git rev-list $ours ^$limit` || exit rebase_dir="$GUILT_DIR/$branch/.rebase.$$" mkdir "$rebase_dir" # # calculate the patch ids for all the commits in upstream # for c in $inup ; do git diff-tree -p $c done | git patch-id | while read id name ; do echo "$name" >> "$rebase_dir/$id" done # backup the status file, so we don't have to do more work to figure out all # the patches that were pushed before we started rebasing cp "$applied" "$rebase_dir/status" disp "First, poping all patches..." pop_all_patches git merge --no-commit $upstream > /dev/null 2> /dev/null disp "" log=`git log -1 --no-decorate --pretty=oneline` disp "HEAD is now at `echo $log | cut -c 1-7`... `echo "$log" | cut -c 41-`" # # For each previously applied patch: # 1) calculate the patchid # 2) if the patchid matches any of the upstream commits' patchids... # a) comment out the patch from the series file # 3) else # a) push the patch onto the stack # IFS=":" cat "$rebase_dir/status" | while read hash name; do disp "" IFS=" " cat "$GUILT_DIR/$branch/$name" | git patch-id | while read patchid commitid ; do disp "Applying '$name'" if [ -f "$rebase_dir/$patchid" ]; then realcommit=`head_n 1 "$rebase_dir/$patchid"` disp "Matches upstream commit $realcommit" series_rename_patch "$name" "###rebased###$name" disp "Patch removed from series." else # FIXME: use a guilt function instead guilt-push > /dev/null disp "Patch applied." fi done IFS=":" done rm -rf "$rebase_dir" disp "" disp "Done." } guilt-0.36/guilt-refresh000077500000000000000000000007641262071220700153020ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[--git] [--diffstat]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -gt 0 ]; do case "$1" in --git) gdiff=t ;; --diffstat) dstat=t ;; *) usage ;; esac shift done TOP=`get_top` if [ -z "$TOP" ]; then die "No patches applied; try guilt push first" fi refresh_patch "$TOP" "$gdiff" "$dstat" echo "Patch $TOP refreshed" } guilt-0.36/guilt-repair000077500000000000000000000052331262071220700151220ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2008-2013 # DO_NOT_CHECK_STATUS_FILE_FORMAT=1 USAGE="--full | --status" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi safety_abort() { die "Please read the man page first. (you need to specify repair mode to proceed)." } # # Check whether status file needs fixing/upgrading. If not, just return, # otherwise proceed to rewrite the status file and set up proper refs # repair_status() { _disp "Checking status file format..." if ! grep "^[0-9a-f]\{40\}:" "$applied" > /dev/null ; then disp "ok; no upgrade necessary." return 0 fi disp "old; about to upgrade." # we got an old format status file printf "" > "$applied.new" cat "$applied" | while read line ; do hash=`echo "$line" | cut -d: -f1` pname=`echo "$line" | cut -d: -f2-` npname=`echo "$pname" | sed -e 's/ /-/g'` [ "$pname" != "$npname" -a -e "$npname" ] && die "Patch name collision" git update-ref "refs/patches/$branch/$npname" "$hash" echo "$npname" >> "$applied.new" if [ "$pname" != "$npname" ]; then series_rename_patch "$pname" "$npname" mv "$GUILT_DIR/$branch/$pname" "$GUILT_DIR/$branch/$npname" fi done # replace the status file mv "$applied" "$applied~" mv "$applied.new" "$applied" disp "Upgrade complete." return 0 } # # Pop all patches - forcefully. # repair_pushed() { if [ -s "$applied" ]; then # there were some patches applied newrev=`git rev-parse refs/patches/$branch/$(head_n 1 < "$applied")^` else # no patches were applied, but let's do all the work anyway newrev="$oldrev" fi disp "Current HEAD commit $oldrev" disp "New HEAD commit $newrev" disp "About to forcefully pop all patches..." _disp "Are you sure you want to proceed? [y/N] " read n if [ "$n" != "y" ] && [ "$n" != "Y" ]; then die "Aborting..." fi # blow away any commits git reset --hard "$newrev" > /dev/null if [ "`git symbolic-ref HEAD`" = "refs/heads/$GUILT_PREFIX$branch" ] && ! $old_style_prefix then git symbolic-ref HEAD refs/heads/$branch git update-ref -d refs/heads/$GUILT_PREFIX$branch fi # blow away the applied stack remove_patch_refs < "$applied" printf "" > "$applied" disp "Patches should be popped." return 0 } _main() { [ $# -ne 1 ] && safety_abort case "$1" in --full) repair="full" ;; --status) repair="status" ;; --autotag) echo "Autotagging is no longer supported" >&2 ;; *) usage ;; esac oldrev=`git show-ref -s "refs/heads/\`git_branch\`"` case "$repair" in full) repair_status repair_pushed ;; status) repair_status ;; *) die "Internal error" ;; esac disp "Repair complete." exit 0 } guilt-0.36/guilt-rm000077500000000000000000000004001262071220700142450ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="..." if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -lt 1 ]; then usage fi git rm -- "$@" } guilt-0.36/guilt-select000077500000000000000000000016621262071220700151210ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Eric Lesh, 2007 # USAGE="[ -n | --none | -s | --series | [--pop|--reapply] ]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi select_guards() { for x in "$@"; do if [ $(printf %s "$x" | grep -e "^[+-]") ]; then die "'$x' cannot begin with + or -." fi done echo "$@" | sed -e 's/ /\n/g' | sort | uniq > "$guards_file" } _main() { if [ $# -eq 0 ]; then if [ -s "$guards_file" ]; then cat "$guards_file" else echo >&2 "No guards applied" fi exit 0 fi case $1 in -n|--none) rm -f "$guards_file" ;; --pop) guilt-pop -a shift select_guards "$@" ;; --reapply) top=`get_top` guilt-pop -a shift select_guards "$@" guilt-push "$top" ;; -s|--series) (get_full_series | while read patch; do get_guards "$patch" done) | sed -e 's/ /\n/g' | sort | uniq ;; *) select_guards "$@" ;; esac } guilt-0.36/guilt-series000077500000000000000000000023241262071220700151300ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-v | -g | -e]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while case "$#" in 0) break ;; esac do case "$1" in -v) verbose=t ;; -g) gui=t ;; -e) edit=t ;; *) usage ;; esac shift done if [ ! -z "$edit" ]; then git_editor "$series" elif [ ! -z "$gui" ]; then [ -z "`get_top`" ] && die "No patches applied." bottom=`git rev-parse refs/patches/$branch/$(head_n 1 "$applied")` top=`git rev-parse refs/patches/$branch/$(tail -n 1 "$applied")` range="$bottom..$top" # FIXME, this doesn't quite work - it's perfectly fine with # "git rev-list", but gitk for whatever reason likes to include the # parent [ "$bottom" = "$top" ] && range="$bottom^..$bottom" gitk $range elif [ -z "$verbose" ]; then get_full_series else prefix="+" top=`get_top` get_full_series | while read patch; do if [ -z "$top" ]; then disp " $patch" else if [ "$patch" = "$top" ]; then disp "= $patch" prefix=" " elif [ $(check_guards "$patch"; echo $?) -eq 1 ]; then echo " $patch" else disp "$prefix $patch" fi fi done fi } guilt-0.36/guilt-status000077500000000000000000000040661262071220700151660ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-a|-A] [-c|-C] [-d|-D] [-m|-M] [-r|-R] [-t|-T] [-u|-U] [-x|-X] [-n]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi print_status() { if [ -z "$no_prefix" ] ; then Apfx="A " Cpfx="C " Dpfx="D " Mpfx="M " Rpfx="R " Tpfx="T " Upfx="U " Xpfx="? " fi while read status name newname do case "$status" in A*) disp "$Apfx$name";; C*) disp "$Cpfx$name -> $newname";; D*) disp "$Dpfx$name";; M ) disp "$Mpfx$name";; R*) disp "$Rpfx$name -> $newname";; T ) disp "$Tpfx$name";; U ) disp "$Upfx$name";; ? ) disp "$Xpfx$name";; esac done } _main() { untracked="" DIFF_FILTER="" while [ $# -gt 0 ]; do case "$1" in -a|-A) DIFF_FILTER="A$DIFF_FILTER" ;; -c|-C) DIFF_FILTER="C$DIFF_FILTER" ;; -d|-D) DIFF_FILTER="D$DIFF_FILTER" ;; -m|-M) DIFF_FILTER="M$DIFF_FILTER" ;; -r|-R) DIFF_FILTER="R$DIFF_FILTER" ;; -t|-T) DIFF_FILTER="T$DIFF_FILTER" ;; -u|-U) DIFF_FILTER="U$DIFF_FILTER" ;; -x|-X) untracked="t" DIFF_FILTER="X$DIFF_FILTER" ;; -n) no_prefix="t" ;; *) usage ;; esac shift done # default status displays all if [ -z "$DIFF_FILTER" ]; then untracked="t" DIFF_FILTER="ACDMRT" fi git rev-parse --verify HEAD >/dev/null 2>&1 || IS_INITIAL=t ( cd_to_toplevel # untracked; FIXME: there's got to be a better way if [ ! -z "$untracked" ]; then if [ -f "$GIT_DIR/info/exclude" ]; then git ls-files -z --others \ --exclude-from="$GIT_DIR/info/exclude" \ --exclude-per-directory=.gitignore else git ls-files -z --others --exclude-per-directory=.gitignore fi | xargs -0 -L 1 echo | while read n; do [ -z "$n" ] && continue echo "$n" | sed -e "s/^/?\t/" done fi # added if [ -z "$IS_INITIAL" ]; then # non-initial commit git diff-index -M --name-status --diff-filter=$DIFF_FILTER HEAD else # initial commit git ls-files | sed -e "s/^/A\t/" fi | sed -e ' s/\\/\\\\/g s/ /\\ /g ' ) | print_status } guilt-0.36/guilt-top000077500000000000000000000005721262071220700144430ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="[-p|--path]" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { while [ $# -ne 0 ]; do case "$1" in -p|--path) path="$GUILT_DIR/$branch/" ;; *) usage ;; esac shift done p=`get_top` if [ -n "$p" ]; then disp "$path$p" fi } guilt-0.36/guilt-unapplied000077500000000000000000000004601262071220700156160ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) Josef "Jeff" Sipek, 2006-2013 # USAGE="" if [ -z "$GUILT_VERSION" ]; then echo "Invoking `basename "$0"` directly is no longer supported." >&2 exit 1 fi _main() { if [ $# -ne 0 ]; then usage fi n=`wc -l < "$applied"` n=`expr $n + 1` get_series | sed -n -e "$n,\$p" } guilt-0.36/os.Darwin000066400000000000000000000017521262071220700143610ustar00rootroot00000000000000# usage: touch_date touch_date() { touch -t `date -r $1 +%Y%m%d%H%M.%S` "$2" } # usage: last_modified last_modified() { stat -f "%m" "$1" } # usage: format_last_modified format_last_modified() { stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S %z" "$1" } # usage: head_n [count] head_n() { if [ "$1" -gt 0 ]; then head -n "$1" fi } # usage: sha1 [file] sha1() { if [ $# = 1 ] then openssl dgst -sha1 "$1" | sed "s,SHA1.\(.*\).= \(.*\),\2 \1," else openssl dgst -sha1 | sed 's,\(.*= \)*\(.*\),\2 -,' fi } # usage: cp_a cp_a() { cp -pR "$1" "$2" } # usage: _tac _tac() { sed -e '1!G;h;$!d' } _seq() { ( if [ $# -eq 1 ] then /usr/bin/jot $1 elif [ $# -eq 2 ] then n1=$((${2} - ${1} + 1)) n2=$1 /usr/bin/jot $n1 $n2 elif [ $# -eq 3 ] then num1=$1 incr=$2 num2=$3 /usr/bin/awk -v n1=$num1 -v n2=$num2 -v add=$incr 'BEGIN{ for(i=n1; i<=n2; i+=add) print i;}' | /usr/bin/sed -E '/e/s/^.+e.+$/0/' fi ) return 0 } guilt-0.36/os.FreeBSD000077700000000000000000000000001262071220700161242os.Darwinustar00rootroot00000000000000guilt-0.36/os.Linux000066400000000000000000000014541262071220700142330ustar00rootroot00000000000000# usage: touch_date touch_date() { touch -d @$1 "$2" } # usage: last_modified last_modified() { stat -c "%Y" "$1" } # usage: format_last_modified format_last_modified() { # must strip nano-second part otherwise git gets very # confused, and makes up strange timestamps from the past # (chances are it decides to interpret it as a unix # timestamp). stat -c "%y" "$1" | sed -e ' s/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]* \(.*\)$/\1-\2-\3 \4:\5:\6 \7/' } # usage: head_n [count] head_n() { head -n "$1" } # usage: sha1 [file] sha1() { if [ $# = 1 ] then sha1sum "$1" else sha1sum fi } # usage: cp_a cp_a() { cp -a "$1" "$2" } # usage: _tac _tac() { tac } _seq() { seq "$@" return $? } guilt-0.36/os.SunOS000066400000000000000000000014541262071220700141430ustar00rootroot00000000000000# usage: touch_date touch_date() { touch -d @$1 "$2" } # usage: last_modified last_modified() { stat -c "%Y" "$1" } # usage: format_last_modified format_last_modified() { # must strip nano-second part otherwise git gets very # confused, and makes up strange timestamps from the past # (chances are it decides to interpret it as a unix # timestamp). stat -c "%y" "$1" | sed -e ' s/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]* \(.*\)$/\1-\2-\3 \4:\5:\6 \7/' } # usage: head_n [count] head_n() { head -n "$1" } # usage: sha1 [file] sha1() { if [ $# = 1 ] then sha1sum "$1" else sha1sum fi } # usage: cp_a cp_a() { cp -a "$1" "$2" } # usage: _tac _tac() { tac } _seq() { seq "$@" return $? } guilt-0.36/regression/000077500000000000000000000000001262071220700147455ustar00rootroot00000000000000guilt-0.36/regression/Makefile000066400000000000000000000000221262071220700163770ustar00rootroot00000000000000all: ./run-tests guilt-0.36/regression/bin/000077500000000000000000000000001262071220700155155ustar00rootroot00000000000000guilt-0.36/regression/bin/dump_ref000077500000000000000000000001511262071220700172410ustar00rootroot00000000000000#!/bin/sh if [ $# -ne 1 ]; then echo "ERROR" exit 1 fi printf "r " cat "$1" | tr "\n" " " echo " $1" guilt-0.36/regression/bin/dump_reg000077500000000000000000000004611262071220700172460ustar00rootroot00000000000000#!/bin/sh if [ $# -ne 1 ]; then echo "ERROR" exit 1 fi UNAME_S=`uname -s` if [ -r "$REG_DIR/../os.$UNAME_S" ]; then . "$REG_DIR/../os.$UNAME_S" else die "Unsupported operating system: $UNAME_S" fi if [ -d "$1" ]; then echo "d $1" elif [ -f "$1" ]; then echo "f `sha1 "$1"`" else echo "? $1" fi guilt-0.36/regression/data/000077500000000000000000000000001262071220700156565ustar00rootroot00000000000000guilt-0.36/regression/data/add.patch000066400000000000000000000003101262071220700174210ustar00rootroot00000000000000diff --git a/abd b/rand new file mode 100644 index 0000000..fd3896d --- /dev/null +++ b/abd @@ -0,0 +1 @@ +‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú<|¢@6¤8'H¸1G_˜Í§*·ðRÒ™¤ ªÂ~· \ No newline at end of file guilt-0.36/regression/data/mode.patch000066400000000000000000000000671262071220700176260ustar00rootroot00000000000000diff --git a/def b/def old mode 100644 new mode 100755 guilt-0.36/regression/data/modify.patch000066400000000000000000000001471262071220700201700ustar00rootroot00000000000000diff --git a/def b/def index 8baef1b..7d69c2f 100644 --- a/def +++ b/def @@ -1 +1,2 @@ abc +asjhfksad guilt-0.36/regression/data/remove.patch000066400000000000000000000003131262071220700201710ustar00rootroot00000000000000diff --git a/abd b/abd deleted file mode 100644 index fd3896d..0000000 --- a/abd +++ /dev/null @@ -1 +0,0 @@ -‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú<|¢@6¤8'H¸1G_˜Í§*·ðRÒ™¤ ªÂ~· \ No newline at end of file guilt-0.36/regression/data/series000066400000000000000000000001731262071220700170740ustar00rootroot00000000000000# # # foo # # # # some text # some text modify add remove mode #sure guilt-0.36/regression/run-tests000077500000000000000000000026101262071220700166360ustar00rootroot00000000000000#!/bin/bash export REG_DIR="$PWD" export PATH="$PWD/bin:$PATH" export LC_ALL=C source scaffold # usage: empty_repo function empty_repo { rm -rf "$REPODIR" mkdir "$REPODIR" cd "$REPODIR" > /dev/null git init 2> /dev/null > /dev/null cd - > /dev/null } function test_failed { cat >&2 < function check_test { if [ ! -x "t-$1.sh" ]; then echo "Test $1 does not exist or is not runnable" >&2 return 1 fi return 0 } # usage: run_test function run_test { # We make sure we can handle space characters # by including one in REPODIR. export REPODIR="/tmp/guilt reg.$RANDOM" export LOGFILE="/tmp/guilt.log.$RANDOM" export TESTNAME="$1" echo -n "$1: " empty_repo # run the test cd "$REPODIR" > /dev/null if "$REG_DIR/t-$1.sh" 2>&1 > "$LOGFILE"; then ERR=false else ERR=true fi cd - > /dev/null $ERR && test_failed diff -u "t-$1.out" "$LOGFILE" || test_failed echo "done." rm -rf "$REPODIR" "$LOGFILE" } case "$1" in -h|--help) echo "Usage: $0 [ [&2 exit 2 fi set -e export PATH=$PWD/..:$PATH export TZ="UTC" export TOUCH_DATE="200701010000.00" export GIT_AUTHOR_DATE="2007-01-01 00:00:00 UTC" export GIT_COMMITTER_DATE="2007-01-01 00:00:00 UTC" export GIT_AUTHOR_NAME="Author Name" export GIT_AUTHOR_EMAIL="author@email" export GIT_COMMITTER_NAME="Commiter Name" export GIT_COMMITTER_EMAIL="commiter@email" # usage: die function die { echo "Error: $@" >&2 exit 1 } UNAME_S=`uname -s` if [ -r "$REG_DIR/../os.$UNAME_S" ]; then . "$REG_DIR/../os.$UNAME_S" else die "Unsupported operating system: $UNAME_S" fi function replace_path { sed -e "s,$PWD,PATH,g" \ -e "s,$REG_DIR/\.\./,,g" \ -e "s,^Usage: guilt-,Usage: guilt ,g" \ -e "s,\.\.\. initial, initial,g" \ -e "s,^Already on\( branch\)\? [\"']\([^\"']*\)[\"']$,Already on \"\2\",g" \ -e "s,^Switched to branch [\"']\([^\"']*\)[\"'],Switched to branch \"\1\",g" \ -e "\\,^Deleted branch guilt/.* (was .*).$,d" } function filter_dd { sed -e 's:^\([0-9]*\) bytes (\([0-9]*\.[0-9]* .B\)) copied.*$:\1 bytes (\2) copied:' } # usage: cmd .. function cmd { printf "%% %s\n" "$*" if ! ( exec 3>&1 rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1` exit $rv ) ; then echo "% FAIL: The above command should succeed but failed." exit 1 fi } # usage: shouldfail .. function shouldfail { printf "%% %s\n" "$*" if ( exec 3>&1 rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1` exit $rv ) ; then echo "% FAIL: The above command should fail but succeeded." exit 1 fi } # usage: list_files function list_files { ( find .git/refs/patches -type f -exec dump_ref {} \; 2> /dev/null || true find .git/refs/patches -type d -exec dump_reg {} \; 2> /dev/null || true find .git/patches -exec dump_reg {} \; ) | sort } function setup_git_repo { # set up the repo so we have something interesting to run guilt on echo "abc" > def git add def git commit -s -m "initial" 2> /dev/null > /dev/null # The HEAD should be a specific hash. Abort the test if it is not. # If we kept on executing, the test would just fail in mysterious # ways. rev=`git rev-parse HEAD` [ "d4850419ccc1146c7169f500725ce504b9774ed0" != "$rev" ] && \ die "setup_git_repo HEAD check failed (HEAD: $rev)" # Explicitly set config that the tests rely on. git config log.date default git config log.decorate no git config guilt.diffstat false git config guilt.reusebranch false } function setup_guilt_repo { mkdir -p .git/patches/master # patch to modify a file cp "$REG_DIR/data/modify.patch" .git/patches/master/modify # patch to add a new file cp "$REG_DIR/data/add.patch" .git/patches/master/add # patch to remove an existing file cp "$REG_DIR/data/remove.patch" .git/patches/master/remove # patch to change a mode cp "$REG_DIR/data/mode.patch" .git/patches/master/mode # the series file of all the things cp "$REG_DIR/data/series" .git/patches/master/series # the status file touch .git/patches/master/status # the status file touch .git/patches/master/status touch -a -m -t "$TOUCH_DATE" .git/patches/master/modify touch -a -m -t "$TOUCH_DATE" .git/patches/master/add touch -a -m -t "$TOUCH_DATE" .git/patches/master/remove touch -a -m -t "$TOUCH_DATE" .git/patches/master/mode } function reset_git_repo { git checkout master git reset --hard d4850419ccc1146c7169f500725ce504b9774ed0 rm -rf .git/patches/ } function setup_repo { setup_git_repo setup_guilt_repo } guilt-0.36/regression/t-010.out000066400000000000000000000051611262071220700162420ustar00rootroot00000000000000% setup_git_repo % reset_git_repo Already on "master" HEAD is now at d485041 initial % guilt init % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt init Branch master appears to be already initialized (GIT_DIR=PATH/.git) % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % reset_git_repo Already on "master" HEAD is now at d485041 initial % guilt init -a Autotagging is no longer supported % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt init -a Autotagging is no longer supported Branch master appears to be already initialized (GIT_DIR=PATH/.git) % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % reset_git_repo Already on "master" HEAD is now at d485041 initial % guilt init -n Autotagging is no longer supported % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt init -n Autotagging is no longer supported Branch master appears to be already initialized (GIT_DIR=PATH/.git) % list_files d .git/patches d .git/patches/master f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % git branch other % git checkout other Switched to branch "other" % guilt init % list_files d .git/patches d .git/patches/master d .git/patches/other f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/other/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/other/status % guilt init Branch other appears to be already initialized (GIT_DIR=PATH/.git) % list_files d .git/patches d .git/patches/master d .git/patches/other f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/other/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/other/status guilt-0.36/regression/t-010.sh000077500000000000000000000005721262071220700160510ustar00rootroot00000000000000#!/bin/bash # # Test the init code # source "$REG_DIR/scaffold" function opts { cat << DONE -a -n DONE } cmd setup_git_repo opts | while read opt ; do cmd reset_git_repo cmd guilt init $opt cmd list_files shouldfail guilt init $opt cmd list_files done cmd git branch other cmd git checkout other cmd guilt init cmd list_files shouldfail guilt init cmd list_files guilt-0.36/regression/t-011.out000066400000000000000000000031451262071220700162430ustar00rootroot00000000000000% setup_git_repo % guilt add Patches directory doesn't exist, try guilt init % guilt applied Patches directory doesn't exist, try guilt init % guilt branch Patches directory doesn't exist, try guilt init % guilt commit Patches directory doesn't exist, try guilt init % guilt delete Patches directory doesn't exist, try guilt init % guilt diff Patches directory doesn't exist, try guilt init % guilt export Patches directory doesn't exist, try guilt init % guilt files Patches directory doesn't exist, try guilt init % guilt fold Patches directory doesn't exist, try guilt init % guilt fork Patches directory doesn't exist, try guilt init % guilt graph Patches directory doesn't exist, try guilt init % guilt header Patches directory doesn't exist, try guilt init % guilt import Patches directory doesn't exist, try guilt init % guilt import-commit Patches directory doesn't exist, try guilt init % guilt new Patches directory doesn't exist, try guilt init % guilt next Patches directory doesn't exist, try guilt init % guilt pop Patches directory doesn't exist, try guilt init % guilt prev Patches directory doesn't exist, try guilt init % guilt push Patches directory doesn't exist, try guilt init % guilt rebase Patches directory doesn't exist, try guilt init % guilt refresh Patches directory doesn't exist, try guilt init % guilt rm Patches directory doesn't exist, try guilt init % guilt series Patches directory doesn't exist, try guilt init % guilt status Patches directory doesn't exist, try guilt init % guilt top Patches directory doesn't exist, try guilt init % guilt unapplied Patches directory doesn't exist, try guilt init guilt-0.36/regression/t-011.sh000077500000000000000000000005721262071220700160520ustar00rootroot00000000000000#!/bin/bash # # Test that all commands that should fail do indeed fail if the branch was # not guilt init'ed # source "$REG_DIR/scaffold" cmd setup_git_repo tests="add applied branch commit delete diff export files fold fork graph header import import-commit new next pop prev push rebase refresh rm series status top unapplied" for t in $tests; do shouldfail guilt $t done guilt-0.36/regression/t-020.out000066400000000000000000000503121262071220700162410ustar00rootroot00000000000000% setup_repo % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push Applying patch..add Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push Applying patch..remove Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push File series fully applied, ends at patch mode % guilt push -a File series fully applied, ends at patch mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop --all All patches popped. % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop --all All patches popped. % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop --all All patches popped. % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop --all All patches popped. % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop --all All patches popped. % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push Applying patch..add Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push Applying patch..remove Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop --all All patches popped. % guilt push -n -2 Invalid number of patches to push. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt pop --all No patches applied. % guilt push -n -1 Invalid number of patches to push. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt pop --all No patches applied. % guilt push -n 0 Patch is already applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt pop --all No patches applied. % guilt push -n 1 Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop --all All patches popped. % guilt push -n 2 Applying patch..modify Patch applied. Applying patch..add Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt pop --all All patches popped. % guilt push -n 3 Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop --all All patches popped. % guilt push -n 4 Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop --all All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt new empty.patch % guilt pop All patches popped. % guilt push Applying patch..empty.patch Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch % git config guilt.diffstat true % guilt refresh Patch empty.patch refreshed % guilt pop All patches popped. % guilt push Applying patch..empty.patch Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch~ f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch % git config guilt.diffstat false % guilt pop All patches popped. % guilt push Applying patch..empty.patch Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ad87a0bdb8cf0a57cfc384633edabbb9c2bfa1b .git/patches/master/empty.patch f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch~ f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status r 8ed27228b117c0c88abf3d586bcc43c68e975cea .git/refs/patches/master/empty.patch % git config guilt.diffstat true % guilt refresh Patch empty.patch refreshed % guilt pop All patches popped. % guilt push Applying patch..empty.patch Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 0803c721968056410df61400bb239380d033b9d5 .git/patches/master/empty.patch f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ad87a0bdb8cf0a57cfc384633edabbb9c2bfa1b .git/patches/master/empty.patch~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status r 8ed27228b117c0c88abf3d586bcc43c68e975cea .git/refs/patches/master/empty.patch % git config guilt.diffstat false % guilt refresh Patch empty.patch refreshed % guilt pop All patches popped. % guilt push Applying patch..empty.patch Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 0803c721968056410df61400bb239380d033b9d5 .git/patches/master/empty.patch~ f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ad87a0bdb8cf0a57cfc384633edabbb9c2bfa1b .git/patches/master/empty.patch f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status r 8ed27228b117c0c88abf3d586bcc43c68e975cea .git/refs/patches/master/empty.patch % guilt delete empty.patch Cannot delete an applied patch % guilt pop -a All patches popped. % guilt delete -f empty.patch % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 0803c721968056410df61400bb239380d033b9d5 .git/patches/master/empty.patch~ f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status guilt-0.36/regression/t-020.sh000077500000000000000000000040211262071220700160430ustar00rootroot00000000000000#!/bin/bash # # Test the push code # source "$REG_DIR/scaffold" function fixup_time_info { cmd guilt pop touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" cmd guilt push } cmd setup_repo # # incremental push by 1 # guilt series | while read n ; do cmd guilt push cmd list_files done # # pushing when there is nothing to push # shouldfail guilt push cmd guilt push -a cmd list_files # # pop all # cmd guilt pop --all # # push by name (initially nothing applied) # guilt series | while read n ; do cmd guilt push $t cmd list_files cmd guilt pop --all done # # push by name (incrementally) # guilt series | while read n ; do cmd guilt push $t cmd list_files done # # pop all # cmd guilt pop --all npatches=`guilt series | wc -l` for n in `_seq -2 $npatches`; do if [ $n -gt 0 ]; then cmd guilt push -n $n else shouldfail guilt push -n $n fi cmd list_files cmd guilt pop --all done cmd list_files # push an empty patch with no commit message cmd guilt new empty.patch fixup_time_info empty.patch cmd list_files # Ensure we can push the empty patch even when guilt.diffstat is true. cmd git config guilt.diffstat true cmd guilt refresh fixup_time_info empty.patch cmd list_files cmd git config guilt.diffstat false # Let the patch have a commit message, but no data. cat > .git/patches/master/empty.patch < This commit fixes a serious bug. FIXME: - add a test case - track down the bug - actually fix it EOF fixup_time_info empty.patch cmd list_files # And once more, with an empty diffstat. cmd git config guilt.diffstat true cmd guilt refresh fixup_time_info empty.patch cmd list_files # Restore the diffstat setting and remove the empty patch. cmd git config guilt.diffstat false cmd guilt refresh fixup_time_info empty.patch cmd list_files # (Cannot delete an applied patch) shouldfail guilt delete empty.patch cmd guilt pop -a cmd guilt delete -f empty.patch cmd list_files # FIXME: # --all # -a # -n with some patches already applied guilt-0.36/regression/t-021.out000066400000000000000000000400631262071220700162440ustar00rootroot00000000000000% setup_repo % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop Now at remove. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop Now at add. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt pop Now at modify. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt pop No patches applied. % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop mode Now at remove. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push --all Applying patch..mode Patch applied. % guilt pop remove Now at add. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push --all Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop add Now at modify. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push --all Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop modify All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop Now at remove. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop Now at add. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt pop Now at modify. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt pop All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop -n -2 Invalid number of patches to pop. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push --all File series fully applied, ends at patch mode % guilt pop -n -1 Invalid number of patches to pop. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push --all File series fully applied, ends at patch mode % guilt pop -n 0 No patches requested to be removed. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push --all File series fully applied, ends at patch mode % guilt pop -n 1 Now at remove. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push --all Applying patch..mode Patch applied. % guilt pop -n 2 Now at add. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push --all Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop -n 3 Now at modify. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push --all Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt pop -n 4 All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove guilt-0.36/regression/t-021.sh000077500000000000000000000016031262071220700160470ustar00rootroot00000000000000#!/bin/bash # # Test the pop code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt push --all cmd list_files # # incremental pop by 1 # guilt series | _tac | while read n ; do cmd guilt pop cmd list_files done # # pop when there is nothing to pop # shouldfail guilt pop # # push all # cmd guilt push --all # # pop by name (initially all applied) # guilt series | _tac | while read n ; do cmd guilt pop $n cmd list_files cmd guilt push --all done # # pop by name (incrementally) # guilt series | _tac | while read n ; do cmd guilt pop $t cmd list_files done # # push all # cmd guilt push --all npatches=`guilt series | wc -l` for n in `_seq -2 $npatches`; do if [ $n -gt 0 ]; then cmd guilt pop -n $n else shouldfail guilt pop -n $n fi cmd list_files cmd guilt push --all done cmd list_files # FIXME: # --all # -a # -n with some patches already applied guilt-0.36/regression/t-022.out000066400000000000000000000072051262071220700162460ustar00rootroot00000000000000% setup_repo % guilt applied % guilt push Applying patch..modify Patch applied. % guilt applied modify % guilt applied -c 33633e7a1aa31972f125878baf7807be57b1672d modify % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push Applying patch..add Patch applied. % guilt applied modify add % guilt applied -c 33633e7a1aa31972f125878baf7807be57b1672d modify 37d588cc39848368810e88332bd03b083f2ce3ac add % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push Applying patch..remove Patch applied. % guilt applied modify add remove % guilt applied -c 33633e7a1aa31972f125878baf7807be57b1672d modify 37d588cc39848368810e88332bd03b083f2ce3ac add ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 remove % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % guilt applied modify add remove mode % guilt applied -c 33633e7a1aa31972f125878baf7807be57b1672d modify 37d588cc39848368810e88332bd03b083f2ce3ac add ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 remove ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove guilt-0.36/regression/t-022.sh000077500000000000000000000003311262071220700160450ustar00rootroot00000000000000#!/bin/bash # # Test the applied code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt applied guilt series | while read n; do cmd guilt push cmd guilt applied cmd guilt applied -c cmd list_files done guilt-0.36/regression/t-023.out000066400000000000000000000144101262071220700162430ustar00rootroot00000000000000% setup_repo % guilt top % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt top modify % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push Applying patch..add Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt top add % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push Applying patch..remove Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt top remove % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt top mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove guilt-0.36/regression/t-023.sh000077500000000000000000000003301262071220700160450ustar00rootroot00000000000000#!/bin/bash # # Test the top code # source "$REG_DIR/scaffold" cmd setup_repo guilt series | while read n ; do cmd guilt top cmd list_files cmd guilt push cmd list_files done cmd guilt top cmd list_files guilt-0.36/regression/t-024.out000066400000000000000000000061531262071220700162510ustar00rootroot00000000000000% setup_repo % guilt unapplied modify add remove mode % guilt push Applying patch..modify Patch applied. % guilt unapplied add remove mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % guilt push Applying patch..add Patch applied. % guilt unapplied remove mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt push Applying patch..remove Patch applied. % guilt unapplied mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove guilt-0.36/regression/t-024.sh000077500000000000000000000003101262071220700160440ustar00rootroot00000000000000#!/bin/bash # # Test the unapplied code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt unapplied guilt series | while read n; do cmd guilt push cmd guilt unapplied cmd list_files done guilt-0.36/regression/t-025.out000066400000000000000000001301651262071220700162530ustar00rootroot00000000000000% setup_repo % guilt new file % guilt pop All patches popped. % guilt push Applying patch..file Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 046c168df2244d3a13985f042a50e479fe56455e .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e65775e6ed741dc0219e6008f7e0b06add0b395 .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file r f14ef0cd369e82820fbb0785c45614aee25c922c .git/refs/patches/master/file % guilt new dir/file % guilt pop Now at file. % guilt push Applying patch..dir/file Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir f 0b488d592b2a401d638ca87dacaf60a061f84c3c .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f fcf45f1999fb2acade0249842191ec584d70b1b3 .git/patches/master/status r bead5908ff96e4b5719fe714c3e50c183152ae57 .git/refs/patches/master/dir/file r f14ef0cd369e82820fbb0785c45614aee25c922c .git/refs/patches/master/file % guilt new dir/subdir/file % guilt pop Now at dir/file. % guilt push Applying patch..dir/subdir/file Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 00f4d968227f29edd1d6dc985c1650f21a343486 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 41e60b99955872feef46698aceb03797b9c3862c .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file r adc76eb117d58d48b5d0de7f81ab45849f538a5b .git/refs/patches/master/dir/subdir/file r bead5908ff96e4b5719fe714c3e50c183152ae57 .git/refs/patches/master/dir/file r f14ef0cd369e82820fbb0785c45614aee25c922c .git/refs/patches/master/file % guilt push --all Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt new append % guilt pop Now at mode. % guilt push Applying patch..append Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 13562c49abffa4e38345b9bcea8682999462daa8 .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 578dd8fc3317db2c8fdab355ce5828d00218990d .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file r 04b6a3533f9570be11faa4aa88ae1461ded2ce83 .git/refs/patches/master/modify r 370875314da47f048ad9daa9f7c71004c81be91f .git/refs/patches/master/append r 4a164dc7680eb902978c8cb395ddd703c04700f1 .git/refs/patches/master/add r 6b20e4fe0d7660696d9a4dc9c557e4bd7a5c2ce5 .git/refs/patches/master/remove r adc76eb117d58d48b5d0de7f81ab45849f538a5b .git/refs/patches/master/dir/subdir/file r bead5908ff96e4b5719fe714c3e50c183152ae57 .git/refs/patches/master/dir/file r f14ef0cd369e82820fbb0785c45614aee25c922c .git/refs/patches/master/file r f8cf938e4d5c1936cf570eb2d7edd6dd18d3335f .git/refs/patches/master/mode % guilt pop --all All patches popped. % guilt new prepend % guilt pop All patches popped. % guilt push Applying patch..prepend Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new white space Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new prepend patch 'prepend' already exist % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new mode patch 'mode' already exist % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new /abc Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new ./blah Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new ../blah Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc/./blah Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc/../blah Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc/. Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc/.. Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc/ Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new abc.lock Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new a/b.lock/c Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new cr Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new ctrl-a Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new formfeed Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new del Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new tilde~ Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new caret^ Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new colon: Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new questionmark? Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new asterisk* Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new open[bracket Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new consecutive//slashes Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new trailing-dot. Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new bad@{seq Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new @ Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new backslash\ Patchname is invalid. It must follow the rules in git-check-ref-format(1). % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % git diff diff --git a/def b/def index 8baef1b..e0e56d9 100644 --- a/def +++ b/def @@ -1 +1,3 @@ abc +% echo qwerty +qwerty % guilt new uncommitted-changes Uncommited changes detected. Refresh first. % git diff diff --git a/def b/def index 8baef1b..e0e56d9 100644 --- a/def +++ b/def @@ -1 +1,3 @@ abc +% echo qwerty +qwerty % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 1ef04b4f4149870b3f06b5f99b9d9fc260cebc67 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7ce0ecd062afe46bf743d0d63dbe79e18774fe03 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend % guilt new -f uncommitted-changes % git diff % guilt pop Now at prepend. % guilt push Applying patch..uncommitted-changes Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 06d2f9f2f2c01d41544a0eab8040959c318e8c3b .git/patches/master/uncommitted-changes f 0d14139c7f15f095b9a3dae9802f20072a4c1859 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 85b7bb43b9e991c005b96ebde8ccf53122ff7342 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend r d82a031e1b47908b850c7a8312300ef5cf289271 .git/refs/patches/master/uncommitted-changes % git update-index def % git diff % git diff HEAD diff --git a/def b/def index e0e56d9..2f766df 100644 --- a/def +++ b/def @@ -1,3 +1,5 @@ abc % echo qwerty qwerty +% echo dvorak +dvorak % guilt new uncommitted-changes2 Uncommited changes detected. Refresh first. % git diff % git diff HEAD diff --git a/def b/def index e0e56d9..2f766df 100644 --- a/def +++ b/def @@ -1,3 +1,5 @@ abc % echo qwerty qwerty +% echo dvorak +dvorak % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 06d2f9f2f2c01d41544a0eab8040959c318e8c3b .git/patches/master/uncommitted-changes f 0d14139c7f15f095b9a3dae9802f20072a4c1859 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 85b7bb43b9e991c005b96ebde8ccf53122ff7342 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend r d82a031e1b47908b850c7a8312300ef5cf289271 .git/refs/patches/master/uncommitted-changes % guilt new -f uncommitted-changes2 % git diff % git diff HEAD % guilt pop Now at uncommitted-changes. % guilt push Applying patch..uncommitted-changes2 Patch applied. % list_files d .git/patches d .git/patches/master d .git/patches/master/dir d .git/patches/master/dir/subdir d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/master/dir d .git/refs/patches/master/dir/subdir f 06d2f9f2f2c01d41544a0eab8040959c318e8c3b .git/patches/master/uncommitted-changes f 0fe110e08d3278d1c5757ee600c0a6c043f0cc07 .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 912890c403fed99c86dbaffc3e3575a585842ac5 .git/patches/master/uncommitted-changes2 f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f ac69907359d4fb6f74172052b00d3e76d2f038ed .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/append f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/dir/subdir/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/file f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/prepend r 142ddaab2d3fbb500521e9e899b463dfc50d2bcf .git/refs/patches/master/uncommitted-changes2 r acdeef96ee30eb34bbbf65d11de5cf7da4b5fee8 .git/refs/patches/master/prepend r d82a031e1b47908b850c7a8312300ef5cf289271 .git/refs/patches/master/uncommitted-changes guilt-0.36/regression/t-025.sh000077500000000000000000000033731262071220700160610ustar00rootroot00000000000000#!/bin/bash # # Test the new code # source "$REG_DIR/scaffold" cmd setup_repo function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } for pname in file dir/file dir/subdir/file ; do cmd guilt new "$pname" cmd guilt pop fixup_time_info "$pname" cmd guilt push cmd list_files done cmd guilt push --all cmd guilt new append cmd guilt pop fixup_time_info append cmd guilt push cmd list_files cmd guilt pop --all cmd guilt new prepend cmd guilt pop fixup_time_info prepend cmd guilt push cmd list_files shouldfail guilt new "white space" cmd list_files b() { printf "%b" "$1" } for pname in prepend mode /abc ./blah ../blah abc/./blah abc/../blah abc/. \ abc/.. abc/ abc.lock a/b.lock/c `b 'cr\r'` `b 'ctrl-a\001'` \ `b 'formfeed\f'` `b 'del\177'` "tilde~" "caret^" "colon:" \ "questionmark?" "asterisk*" "open[bracket" "consecutive//slashes" \ "trailing-dot." "bad@{seq" "@" "backslash\\" do shouldfail guilt new "$pname" cmd list_files done # # Test the -f option # # modify the working dir file cmd echo qwerty >> def cmd git diff # try to make a new patch, without -f shouldfail guilt new uncommitted-changes cmd git diff cmd list_files # give new -f, to force things cmd guilt new -f uncommitted-changes cmd git diff cmd guilt pop fixup_time_info uncommitted-changes cmd guilt push cmd list_files # modify the working dir file (again) cmd echo dvorak >> def cmd git update-index def cmd git diff cmd git diff HEAD # try to make a new patch, without -f shouldfail guilt new uncommitted-changes2 cmd git diff cmd git diff HEAD cmd list_files # give new -f, to force things cmd guilt new -f uncommitted-changes2 cmd git diff cmd git diff HEAD cmd guilt pop fixup_time_info uncommitted-changes2 cmd guilt push cmd list_files guilt-0.36/regression/t-026.out000066400000000000000000000040451262071220700162510ustar00rootroot00000000000000% setup_repo % guilt delete mode % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f f819c9abb712af6e42af30044bc5388d454ab0cb .git/patches/master/series % guilt delete mode % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f f819c9abb712af6e42af30044bc5388d454ab0cb .git/patches/master/series % guilt delete add % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7848194fd2e9ee0eb6589482900687d799d60a12 .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt new delete-me % guilt pop All patches popped. % guilt delete -f delete-me % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7848194fd2e9ee0eb6589482900687d799d60a12 .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status guilt-0.36/regression/t-026.sh000077500000000000000000000005161262071220700160560ustar00rootroot00000000000000#!/bin/bash # # Test the delete code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt delete mode cmd list_files cmd guilt delete mode # FIXME: this should return a non-zero status, no? cmd list_files cmd guilt delete add cmd list_files cmd guilt new delete-me cmd guilt pop cmd guilt delete -f delete-me cmd list_files guilt-0.36/regression/t-027.out000066400000000000000000000026511262071220700162530ustar00rootroot00000000000000% setup_repo % guilt refresh No patches applied; try guilt push first % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % git reset --hard HEAD HEAD is now at d485041 initial % guilt push modify Applying patch..modify Patch applied. % guilt refresh Patch modify refreshed % guilt pop All patches popped. % guilt push modify Applying patch..modify Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 42d2613ecee1b642b2b8b7b7a9cef165bf456e48 .git/patches/master/modify f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify~ r af394c0ad0537bf654800624ea2f281cd7699364 .git/refs/patches/master/modify guilt-0.36/regression/t-027.sh000077500000000000000000000007761262071220700160670ustar00rootroot00000000000000#!/bin/bash # # Test the refresh code # source "$REG_DIR/scaffold" cmd setup_repo function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } echo abcdef >> def shouldfail guilt refresh cmd list_files cmd git reset --hard HEAD cmd guilt push modify echo abcdef >> def cmd guilt refresh cmd guilt pop fixup_time_info modify cmd guilt push modify cmd list_files # FIXME: we should check that the patch actually contains what it should, # test arguments work the way they should guilt-0.36/regression/t-028.out000066400000000000000000000037311262071220700162540ustar00rootroot00000000000000% setup_repo % guilt header No patches applied. % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt new -s -m blah blah blah patch-with-some-desc % guilt pop Now at mode. % guilt push Applying patch..patch-with-some-desc Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 0e237aa56ddba6f87bf0e9b5748373da4e6983c3 .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c87bb44fd4f1c10033b13562be50006f57c98eab .git/patches/master/series f e4a20695c36bc826bad047d69ff3315df7062bf4 .git/patches/master/patch-with-some-desc r 183edd7ba80324ae143496192d73dea328942ddb .git/refs/patches/master/patch-with-some-desc r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt header blah blah blah Signed-off-by: Commiter Name % guilt header modify % guilt header add % guilt header remove % guilt header mode % guilt header patch-with-some-desc blah blah blah Signed-off-by: Commiter Name % guilt header non-existant Patch non-existant is not in the series % guilt header .* .* does not uniquely identify a patch. Did you mean any of these? modify add remove mode patch-with-some-desc % guilt header de de does not uniquely identify a patch. Did you mean any of these? mode patch-with-some-desc % guilt header des blah blah blah Signed-off-by: Commiter Name guilt-0.36/regression/t-028.sh000077500000000000000000000013251262071220700160570ustar00rootroot00000000000000#!/bin/bash # # Test the header code # source "$REG_DIR/scaffold" cmd setup_repo function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } shouldfail guilt header cmd guilt push -a cmd guilt new -s -m "blah blah blah" patch-with-some-desc cmd guilt pop fixup_time_info patch-with-some-desc cmd guilt push cmd list_files cmd guilt header guilt series | while read n; do cmd guilt header $n done shouldfail guilt header non-existant # This is an evil variant of a non-existant patch. However, this # patch name is a regexp that just happens to match an existing patch. shouldfail guilt header '.*' shouldfail guilt header de cmd guilt header des # FIXME: how do we check that -e works? guilt-0.36/regression/t-029.out000066400000000000000000000152031262071220700162520ustar00rootroot00000000000000% setup_repo % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt repair Please read the man page first. (you need to specify repair mode to proceed). % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt repair --full Checking status file format...ok; no upgrade necessary. Current HEAD commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba New HEAD commit d4850419ccc1146c7169f500725ce504b9774ed0 About to forcefully pop all patches... Are you sure you want to proceed? [y/N] Aborting... % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt repair --full Checking status file format...ok; no upgrade necessary. Current HEAD commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba New HEAD commit d4850419ccc1146c7169f500725ce504b9774ed0 About to forcefully pop all patches... Are you sure you want to proceed? [y/N] Aborting... % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt repair --full Checking status file format...ok; no upgrade necessary. Current HEAD commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba New HEAD commit d4850419ccc1146c7169f500725ce504b9774ed0 About to forcefully pop all patches... Are you sure you want to proceed? [y/N] Patches should be popped. Repair complete. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt repair --full Checking status file format...ok; no upgrade necessary. Current HEAD commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba New HEAD commit d4850419ccc1146c7169f500725ce504b9774ed0 About to forcefully pop all patches... Are you sure you want to proceed? [y/N] Patches should be popped. Repair complete. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status guilt-0.36/regression/t-029.sh000077500000000000000000000007461262071220700160660ustar00rootroot00000000000000#!/bin/bash # # Test the repair code # # FIXME: test status file format upgrade code source "$REG_DIR/scaffold" cmd setup_repo cmd guilt push -a cmd list_files shouldfail guilt repair cmd list_files echo | shouldfail guilt repair --full cmd list_files yes n 2>/dev/null | shouldfail guilt repair --full cmd list_files yes y 2>/dev/null | cmd guilt repair --full cmd list_files cmd guilt push -a cmd list_files yes Y 2>/dev/null | cmd guilt repair --full cmd list_files guilt-0.36/regression/t-030.out000066400000000000000000000141061262071220700162430ustar00rootroot00000000000000% setup_repo % guilt commit Usage: guilt commit -n | -a | --all % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt commit -n 0 % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt commit -n 1 % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt commit -a % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt commit --all % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt commit Usage: guilt commit -n | -a | --all % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt commit -n 0 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt commit -n 1 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 0ec57719fbf8c52006b6a10bb45d8ec6d45a0c57 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 3b6548e3e05910ff14ec9b1b3cbeadb2e1334522 .git/patches/master/status f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt commit -a % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 3516b9a25ed0eb359d1920f62a59f093bb90f7dd .git/patches/master/series f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt commit --all % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 3516b9a25ed0eb359d1920f62a59f093bb90f7dd .git/patches/master/series f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status guilt-0.36/regression/t-030.sh000077500000000000000000000006531262071220700160530ustar00rootroot00000000000000#!/bin/bash # # Test the commit code # source "$REG_DIR/scaffold" cmd setup_repo function opts_to_try { cat << DONE -n 0 -n 1 -a --all DONE } shouldfail guilt commit cmd list_files opts_to_try | while read opt; do cmd guilt commit $opt cmd list_files done cmd guilt push -a shouldfail guilt commit cmd list_files opts_to_try | while read opt; do cmd guilt commit $opt cmd list_files done echo > /dev/null guilt-0.36/regression/t-031.out000066400000000000000000000043331262071220700162450ustar00rootroot00000000000000% setup_repo % guilt push -n 2 Applying patch..modify Patch applied. Applying patch..add Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt fork mode Patch "mode" already exists. Choose another name. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % guilt fork foobar % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 60bc97eb44b6e7424b22f6cf4ac09e71a1911447 .git/patches/master/status f 6b8e2c2139d4133d7d25c79b4e083f8fd5a09a32 .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/foobar f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/foobar guilt-0.36/regression/t-031.sh000077500000000000000000000003131262071220700160450ustar00rootroot00000000000000#!/bin/bash # # Test the fork code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt push -n 2 cmd list_files shouldfail guilt fork mode cmd list_files cmd guilt fork foobar cmd list_files guilt-0.36/regression/t-032.out000066400000000000000000000011131262071220700162370ustar00rootroot00000000000000% setup_repo % touch foo foo:baz % guilt import -P foo:bar foo The specified patch name is invalid according to git-check-ref-format(1). % guilt import -P foo:bar foo2 Specified file does not exist. % guilt import -P foo foo2 Specified file does not exist. % guilt import -P foo3 foo % guilt import -P foo3 foo Already tracking a patch under that name. % guilt import -P foo2 foo % guilt import foo % guilt import foo Already tracking a patch under that name. % guilt import -P foo,bar foo % guilt import foo:baz The specified patch name is invalid according to git-check-ref-format(1). guilt-0.36/regression/t-032.sh000077500000000000000000000012371262071220700160540ustar00rootroot00000000000000#!/bin/bash # # Test the import code # source "$REG_DIR/scaffold" cmd setup_repo cmd touch foo foo:baz # invalid character shouldfail guilt import -P foo:bar foo # non-existant file & invalid character shouldfail guilt import -P foo:bar foo2 # non-existant file shouldfail guilt import -P foo foo2 # ok cmd guilt import -P foo3 foo # duplicate patch name shouldfail guilt import -P foo3 foo # ok cmd guilt import -P foo2 foo # ok cmd guilt import foo # duplicate patch name (implicit) shouldfail guilt import foo # check that bug 47 doesn't come back cmd guilt import -P foo,bar foo # implicitly bad patch name - invalid char shouldfail guilt import foo:baz guilt-0.36/regression/t-033.out000066400000000000000000000065341262071220700162540ustar00rootroot00000000000000% setup_repo % guilt graph No patch applied. %% Testing branch a,graph % git checkout -b a,graph master Switched to a new branch 'a,graph' % guilt init % guilt new a.patch % guilt pop All patches popped. % guilt push Applying patch..a.patch Patch applied. % guilt graph digraph G { # checking rev 95275d7c05c6a6176d3941374115b91272877f6c "95275d7c05c6a6176d3941374115b91272877f6c" [label="a.patch"] } % git add file.txt % guilt refresh Patch a.patch refreshed % guilt pop All patches popped. % guilt push Applying patch..a.patch Patch applied. % guilt graph digraph G { # checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d "ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"] } %% Adding an unrelated file in a new patch. No deps. % guilt new b.patch % git add file2.txt % guilt refresh Patch b.patch refreshed % guilt pop Now at a.patch. % guilt push Applying patch..b.patch Patch applied. % guilt graph digraph G { # checking rev c7014443c33d2b0237293687ceb9cbd38313df65 "c7014443c33d2b0237293687ceb9cbd38313df65" [label="b.patch"] # checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d "ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"] } %% Changing a file already changed in the first patch adds a dependency. % guilt new c.patch % git add file.txt % guilt refresh Patch c.patch refreshed % guilt pop Now at b.patch. % guilt push Applying patch..c.patch Patch applied. % guilt graph digraph G { # checking rev 891bc14b5603474c9743fd04f3da888644413dc5 "891bc14b5603474c9743fd04f3da888644413dc5" [label="c.patch"] # checking rev c7014443c33d2b0237293687ceb9cbd38313df65 "c7014443c33d2b0237293687ceb9cbd38313df65" [label="b.patch"] # checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d "ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"] "891bc14b5603474c9743fd04f3da888644413dc5" -> "ff2775f8d1dc753f635830adcc3a067e0b681e2d"; // ? } % guilt new a-"better&quicker'-patch.patch % git add file.txt % guilt refresh Patch a-"better&quicker'-patch.patch refreshed % guilt pop Now at c.patch. % guilt push Applying patch..a-"better&quicker'-patch.patch Patch applied. % guilt graph digraph G { # checking rev bc7df666a646739eaf559af23cab72f2bfd01f0e "bc7df666a646739eaf559af23cab72f2bfd01f0e" [label="a-\"better&quicker'-patch.patch"] # checking rev 891bc14b5603474c9743fd04f3da888644413dc5 "891bc14b5603474c9743fd04f3da888644413dc5" [label="c.patch"] "bc7df666a646739eaf559af23cab72f2bfd01f0e" -> "891bc14b5603474c9743fd04f3da888644413dc5"; // ? # checking rev c7014443c33d2b0237293687ceb9cbd38313df65 "c7014443c33d2b0237293687ceb9cbd38313df65" [label="b.patch"] # checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d "ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"] "891bc14b5603474c9743fd04f3da888644413dc5" -> "ff2775f8d1dc753f635830adcc3a067e0b681e2d"; // ? } %% The same graph, but excluding deps introduced by file.txt. % guilt graph -x file.txt digraph G { # checking rev bc7df666a646739eaf559af23cab72f2bfd01f0e "bc7df666a646739eaf559af23cab72f2bfd01f0e" [label="a-\"better&quicker'-patch.patch"] # checking rev 891bc14b5603474c9743fd04f3da888644413dc5 "891bc14b5603474c9743fd04f3da888644413dc5" [label="c.patch"] # checking rev c7014443c33d2b0237293687ceb9cbd38313df65 "c7014443c33d2b0237293687ceb9cbd38313df65" [label="b.patch"] # checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d "ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"] } guilt-0.36/regression/t-033.sh000077500000000000000000000025761262071220700160640ustar00rootroot00000000000000#!/bin/bash # # Test the graph code # function fixup_time_info { cmd guilt pop touch -a -m -t "$TOUCH_DATE" ".git/patches/a,graph/$1" cmd guilt push } source "$REG_DIR/scaffold" cmd setup_repo # Check that "guilt graph" gives a proper "No patch applied" error # message when no patches are applied. (An older version of guilt # used to enter an endless loop in this situation.) shouldfail guilt graph echo "%% Testing branch a,graph" cmd git checkout -b a,graph master cmd guilt init cmd guilt new a.patch fixup_time_info a.patch cmd guilt graph cmd echo a >> file.txt cmd git add file.txt cmd guilt refresh fixup_time_info a.patch cmd guilt graph echo "%% Adding an unrelated file in a new patch. No deps." cmd guilt new b.patch cmd echo b >> file2.txt cmd git add file2.txt cmd guilt refresh fixup_time_info b.patch cmd guilt graph echo "%% Changing a file already changed in the first patch adds a dependency." cmd guilt new c.patch cmd echo c >> file.txt cmd git add file.txt cmd guilt refresh fixup_time_info c.patch cmd guilt graph # A patch name that contains funky characters, including unbalanced # quotes. cmd guilt new "a-\"better&quicker'-patch.patch" cmd echo d >> file.txt cmd git add file.txt cmd guilt refresh fixup_time_info "a-\"better&quicker'-patch.patch" cmd guilt graph echo "%% The same graph, but excluding deps introduced by file.txt." cmd guilt graph -x file.txt guilt-0.36/regression/t-034.out000066400000000000000000000504051262071220700162510ustar00rootroot00000000000000% setup_git_repo % git tag base % create_commit a The sequence /. is forbidden. [master eebb76e] The sequence /. is forbidden. Author: Author Name 1 file changed, 1 insertion(+) create mode 100644 a % create_commit a The sequence .lock/ is forbidden. [master 45e81b5] The sequence .lock/ is forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a A/component/may/not/end/in/foo.lock [master bbf3f59] A/component/may/not/end/in/foo.lock Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Two consecutive dots (..) is forbidden. [master 1535e67] Two consecutive dots (..) is forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Check/multiple/../dots/...../foo..patch [master 48eb60c] Check/multiple/../dots/...../foo..patch Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Space is forbidden. [master 10dea83] Space is forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Tilde~is~forbidden. [master 70a83b7] Tilde~is~forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Caret^is^forbidden. [master ee6ef2c] Caret^is^forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Colon:is:forbidden. [master c077fe2] Colon:is:forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Delisforbidden. [master 589ee30] Delisforbidden. Author: Author Name 1 file changed, 1 insertion(+) % git branch some-branch % git tag some-tag % create_commit a Ctrlisforbidden. [master e63cdde] Ctrlisforbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a CR is also forbidden. [master 21ad093] CR is also forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Question-mark?is?forbidden. [master be2fa9b] Question-mark?is?forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Asterisk*is*forbidden. [master af7b50f] Asterisk*is*forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Open[bracket[is[forbidden. [master 689f618] Open[bracket[is[forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Multiple/slashes//are//forbidden. [master 6e7d52a] Multiple/slashes//are//forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Cannot/end/in/slash/ [master 95bb6cd] Cannot/end/in/slash/ Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Cannot end in .. [master 106e8e5] Cannot end in .. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Cannot@{have@{the@{sequence@{at-brace. [master 30187ed] Cannot@{have@{the@{sequence@{at-brace. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a @ [master aedb74f] @ Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Backslash\is\forbidden. [master 0a46f8f] Backslash\is\forbidden. Author: Author Name 1 file changed, 1 insertion(+) % create_commit a Can/have/embedded/single/slashes [master 2a8b188] Can/have/embedded/single/slashes Author: Author Name 1 file changed, 1 insertion(+) % git log commit 2a8b1889aa5066193bac978e6bf5073ffcfa6541 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Can/have/embedded/single/slashes commit 0a46f8fa7c8c5a6f1039f842fe5cbd21d3a2a2a6 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Backslash\is\forbidden. commit aedb74fd8388282fd7af50cb191a7f62bfc45eb5 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 @ commit 30187ed0f47d12df9cedcbb846647d0d52130c12 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot@{have@{the@{sequence@{at-brace. commit 106e8e5a8cceec7297af97376ca5f93506643d0b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot end in .. commit 95bb6cd7edf7b1e634a1e7d02c8faa99e39cbbf2 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot/end/in/slash/ commit 6e7d52a7dacc684225c11b4edd2bac25fb52bd9b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Multiple/slashes//are//forbidden. commit 689f618085195775d204898254154b8bb50897a5 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Open[bracket[is[forbidden. commit af7b50f93854bc5f46de5a389c1f3dea081eae2f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Asterisk*is*forbidden. commit be2fa9b5c5788dc05c4036f1b8197a1d33169610 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Question-mark?is?forbidden. commit 21ad093a0c1b4a96285180a3d7b99a4045ef9202 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 CR is also forbidden. commit e63cdde7a1c90b66d7d411683528200f3f067d5f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Ctrlisforbidden. commit 589ee305a82aacf155529e75cbc84e661c37c83d Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Delisforbidden. commit c077fe203fd18036fb00b56eec1763673d1769c6 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Colon:is:forbidden. commit ee6ef2cc9dd5525409300377b013c0d9734bd931 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Caret^is^forbidden. commit 70a83b705a2602a9493aba7f8f22e7abd13adc63 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Tilde~is~forbidden. commit 10dea8380135f4d10cd10324e13da659261ceda3 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Space is forbidden. commit 48eb60cddaefdaac5f78655f9028a9da741a18d1 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Check/multiple/../dots/...../foo..patch commit 1535e67718949abf72f843685a1672ebfe4bd21f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Two consecutive dots (..) is forbidden. commit bbf3f5926e11d97b08cdb6e833c9deb603453d1b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 A/component/may/not/end/in/foo.lock commit 45e81b5163ec3ed656b058ac3fd95b8986824e0f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence .lock/ is forbidden. commit eebb76e96913d2dc78aef5f233fadc74af770b3b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence /. is forbidden. commit d4850419ccc1146c7169f500725ce504b9774ed0 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 initial Signed-off-by: Commiter Name % guilt init % git config log.decorate short % guilt import-commit base..HEAD About to begin conversion... Current head: 2a8b1889aa5066193bac978e6bf5073ffcfa6541 Converting 2a8b1889 as can-have-embedded-single-slashes Converting 0a46f8fa as backslash-is-forbidden Converting aedb74fd as x Converting 30187ed0 as cannot@have@the@sequence@at-brace Converting 106e8e5a as cannot_end_in_ Converting 95bb6cd7 as cannot-end-in-slash- Converting 6e7d52a7 as multiple-slashes--are--forbidden Converting 689f6180 as openbracketisforbidden Converting af7b50f9 as asterisk-is-forbidden Converting be2fa9b5 as question-mark-is-forbidden Converting 21ad093a as crisalsoforbidden Converting e63cdde7 as ctrlisforbidden Converting 589ee305 as delisforbidden Converting c077fe20 as colon_is_forbidden Converting ee6ef2cc as caretisforbidden Converting 70a83b70 as tildeisforbidden Converting 10dea838 as space_is_forbidden Converting 48eb60cd as check-multiple-.-dots-.-foo Converting 1535e677 as two_consecutive_dots_(.)_is_forbidden Converting bbf3f592 as a-component-may-not-end-in-foolock Converting 45e81b51 as the_sequence_.lock-_is_forbidden Converting eebb76e9 as the_sequence_-._is_forbidden Done. Current head: d4850419ccc1146c7169f500725ce504b9774ed0 % git config log.decorate no % guilt push -a Applying patch..the_sequence_-._is_forbidden.patch Patch applied. Applying patch..the_sequence_.lock-_is_forbidden.patch Patch applied. Applying patch..a-component-may-not-end-in-foolock.patch Patch applied. Applying patch..two_consecutive_dots_(.)_is_forbidden.patch Patch applied. Applying patch..check-multiple-.-dots-.-foo.patch Patch applied. Applying patch..space_is_forbidden.patch Patch applied. Applying patch..tildeisforbidden.patch Patch applied. Applying patch..caretisforbidden.patch Patch applied. Applying patch..colon_is_forbidden.patch Patch applied. Applying patch..delisforbidden.patch Patch applied. Applying patch..ctrlisforbidden.patch Patch applied. Applying patch..crisalsoforbidden.patch Patch applied. Applying patch..question-mark-is-forbidden.patch Patch applied. Applying patch..asterisk-is-forbidden.patch Patch applied. Applying patch..openbracketisforbidden.patch Patch applied. Applying patch..multiple-slashes--are--forbidden.patch Patch applied. Applying patch..cannot-end-in-slash-.patch Patch applied. Applying patch..cannot_end_in_.patch Patch applied. Applying patch..cannot@have@the@sequence@at-brace.patch Patch applied. Applying patch..x.patch Patch applied. Applying patch..backslash-is-forbidden.patch Patch applied. Applying patch..can-have-embedded-single-slashes.patch Patch applied. % git log --decorate commit 434e07cacdd8e7eb4723e67cb2d100b3a4121a3a (HEAD, refs/patches/master/can-have-embedded-single-slashes.patch, guilt/master) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Can/have/embedded/single/slashes commit 7c3ffa4f940c862e9f11f5d4a5ae421f7a8d3141 (refs/patches/master/backslash-is-forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Backslash\is\forbidden. commit ea46f435d4d8f3c5349dce1aabc1a39fbf7ef803 (refs/patches/master/x.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 @ commit a275ed5d7f10ea88c986852ee95a7d5a61663b5f (refs/patches/master/cannot@have@the@sequence@at-brace.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot@{have@{the@{sequence@{at-brace. commit f091fee39457e64ebd35410c1cf95e6613816a54 (refs/patches/master/cannot_end_in_.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot end in .. commit 025672497aff5c910c8ff86aaedc662f14c2f4ad (refs/patches/master/cannot-end-in-slash-.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Cannot/end/in/slash/ commit f13e243c7c56f39422567a431bccceec8b789596 (refs/patches/master/multiple-slashes--are--forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Multiple/slashes//are//forbidden. commit edef5e925083d445f71c170d3293fac9619bc7a2 (refs/patches/master/openbracketisforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Open[bracket[is[forbidden. commit 1626a11d979a1e9e775c766484172212277153df (refs/patches/master/asterisk-is-forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Asterisk*is*forbidden. commit 74df14ab3a0ec9a0382998fbf167ebb1b0a36c6a (refs/patches/master/question-mark-is-forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Question-mark?is?forbidden. commit ec46429125abdb0c5ac2b46cc399bdcd7cfc73fd (refs/patches/master/crisalsoforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 CR is also forbidden. commit 01524f9921af2a041cc88c068f76baa39e436cb2 (refs/patches/master/ctrlisforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Ctrlisforbidden. commit 9fc9677b61880f9159838e89f714893e0a2fcafb (refs/patches/master/delisforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Delisforbidden. commit 10433fd7206b7f79aabb4da514710d93c8deed4a (refs/patches/master/colon_is_forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Colon:is:forbidden. commit fb1edb753c97ec865ceea316420b1df586caaa2b (refs/patches/master/caretisforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Caret^is^forbidden. commit 3a0d5ccef0359004fcaa9cee98fbd6a2c4432e74 (refs/patches/master/tildeisforbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Tilde~is~forbidden. commit ea22c3b49c448dba8d7eaa6b805f9f1bc83fbedc (refs/patches/master/space_is_forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Space is forbidden. commit db6ea8252440b04811344336f510a5469b2ddab0 (refs/patches/master/check-multiple-.-dots-.-foo.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Check/multiple/../dots/...../foo..patch commit fe07105cd62660f4440ad24b9fc7dfdd9e71d764 (refs/patches/master/two_consecutive_dots_(.)_is_forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Two consecutive dots (..) is forbidden. commit 96a3e92c4df85f52362ce4f6d31983c462db9ae9 (refs/patches/master/a-component-may-not-end-in-foolock.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 A/component/may/not/end/in/foo.lock commit ee4f0f96dfc9c94f5410c1e6414f9004325a37fc (refs/patches/master/the_sequence_.lock-_is_forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence .lock/ is forbidden. commit fdcb23c3072209bea3d9e0a2594132b936c5347e (refs/patches/master/the_sequence_-._is_forbidden.patch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence /. is forbidden. commit d4850419ccc1146c7169f500725ce504b9774ed0 (tag: base, master) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 initial Signed-off-by: Commiter Name % git log --decorate some-branch commit 589ee305a82aacf155529e75cbc84e661c37c83d (tag: some-tag, some-branch) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Delisforbidden. commit c077fe203fd18036fb00b56eec1763673d1769c6 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Colon:is:forbidden. commit ee6ef2cc9dd5525409300377b013c0d9734bd931 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Caret^is^forbidden. commit 70a83b705a2602a9493aba7f8f22e7abd13adc63 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Tilde~is~forbidden. commit 10dea8380135f4d10cd10324e13da659261ceda3 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Space is forbidden. commit 48eb60cddaefdaac5f78655f9028a9da741a18d1 Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Check/multiple/../dots/...../foo..patch commit 1535e67718949abf72f843685a1672ebfe4bd21f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 Two consecutive dots (..) is forbidden. commit bbf3f5926e11d97b08cdb6e833c9deb603453d1b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 A/component/may/not/end/in/foo.lock commit 45e81b5163ec3ed656b058ac3fd95b8986824e0f Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence .lock/ is forbidden. commit eebb76e96913d2dc78aef5f233fadc74af770b3b Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 The sequence /. is forbidden. commit d4850419ccc1146c7169f500725ce504b9774ed0 (tag: base, master) Author: Author Name Date: Mon Jan 1 00:00:00 2007 +0000 initial Signed-off-by: Commiter Name % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 06beca7069b9e576bd431f65d13862ed5d3e2a0f .git/patches/master/ctrlisforbidden.patch f 09b7e9be44ae5ec3a4bb30f5ee9d4ebc2c042f64 .git/patches/master/two_consecutive_dots_(.)_is_forbidden.patch f 0b971c9a17aeca2319c93d700ffd98acc2a93451 .git/patches/master/question-mark-is-forbidden.patch f 2b8392f63d61efc12add554555adae30883993cc .git/patches/master/cannot-end-in-slash-.patch f 2cd7c9ad392e071be03c051c6793e9b1e31d33c4 .git/patches/master/can-have-embedded-single-slashes.patch f 3136e448a4c820f6d2642f9d894c4087d3d109ab .git/patches/master/cannot_end_in_.patch f 34e07c584032df137f19bdb66d93f316f00a5ac8 .git/patches/master/tildeisforbidden.patch f 49bab499826b63deb2bd704629d60c7268c57aee .git/patches/master/the_sequence_-._is_forbidden.patch f 5bcddb8ccb6e6e5e8a61e9e56cb2e0f70cbab2f5 .git/patches/master/cannot@have@the@sequence@at-brace.patch f 637b982fe14a240de181ae63226b27e0c406b3dc .git/patches/master/asterisk-is-forbidden.patch f 698f8a7d41a64e3b6be1a3eba86574078b22a5f3 .git/patches/master/backslash-is-forbidden.patch f 7b103c3c7ae298cd2334f6f49da48bae1424f77b .git/patches/master/crisalsoforbidden.patch f 9b810b8c63779c51d2e7f61ab59cd49835041563 .git/patches/master/x.patch f a22958d9ae9976fd7b2b5a9d0bcd44bf7ad9b08a .git/patches/master/caretisforbidden.patch f ab325bf5a432937fc6f231d3e8a773a62d53952b .git/patches/master/multiple-slashes--are--forbidden.patch f cb9cffbd4465bddee266c20ccebd14eb687eaa89 .git/patches/master/delisforbidden.patch f d0885a1a1fdee0fd1e4fedce3f7acd3100540bc4 .git/patches/master/openbracketisforbidden.patch f d2903523fb66a346596eabbdd1bda4e52b266440 .git/patches/master/check-multiple-.-dots-.-foo.patch f da90de1c84138194524994e0bc3bc4ca8189c999 .git/patches/master/series f da90de1c84138194524994e0bc3bc4ca8189c999 .git/patches/master/status f dfc11f76394059909671af036598c5fbe33001ba .git/patches/master/space_is_forbidden.patch f e47474c52d6c893f36d0457f885a6dd1267742bb .git/patches/master/colon_is_forbidden.patch f e7a5f8912592d9891e6159f5827c8b4f372cc406 .git/patches/master/the_sequence_.lock-_is_forbidden.patch f edfaa5e06bd662ae1f6a642834324fd9b849bbd9 .git/patches/master/a-component-may-not-end-in-foolock.patch r 01524f9921af2a041cc88c068f76baa39e436cb2 .git/refs/patches/master/ctrlisforbidden.patch r 025672497aff5c910c8ff86aaedc662f14c2f4ad .git/refs/patches/master/cannot-end-in-slash-.patch r 10433fd7206b7f79aabb4da514710d93c8deed4a .git/refs/patches/master/colon_is_forbidden.patch r 1626a11d979a1e9e775c766484172212277153df .git/refs/patches/master/asterisk-is-forbidden.patch r 3a0d5ccef0359004fcaa9cee98fbd6a2c4432e74 .git/refs/patches/master/tildeisforbidden.patch r 434e07cacdd8e7eb4723e67cb2d100b3a4121a3a .git/refs/patches/master/can-have-embedded-single-slashes.patch r 74df14ab3a0ec9a0382998fbf167ebb1b0a36c6a .git/refs/patches/master/question-mark-is-forbidden.patch r 7c3ffa4f940c862e9f11f5d4a5ae421f7a8d3141 .git/refs/patches/master/backslash-is-forbidden.patch r 96a3e92c4df85f52362ce4f6d31983c462db9ae9 .git/refs/patches/master/a-component-may-not-end-in-foolock.patch r 9fc9677b61880f9159838e89f714893e0a2fcafb .git/refs/patches/master/delisforbidden.patch r a275ed5d7f10ea88c986852ee95a7d5a61663b5f .git/refs/patches/master/cannot@have@the@sequence@at-brace.patch r db6ea8252440b04811344336f510a5469b2ddab0 .git/refs/patches/master/check-multiple-.-dots-.-foo.patch r ea22c3b49c448dba8d7eaa6b805f9f1bc83fbedc .git/refs/patches/master/space_is_forbidden.patch r ea46f435d4d8f3c5349dce1aabc1a39fbf7ef803 .git/refs/patches/master/x.patch r ec46429125abdb0c5ac2b46cc399bdcd7cfc73fd .git/refs/patches/master/crisalsoforbidden.patch r edef5e925083d445f71c170d3293fac9619bc7a2 .git/refs/patches/master/openbracketisforbidden.patch r ee4f0f96dfc9c94f5410c1e6414f9004325a37fc .git/refs/patches/master/the_sequence_.lock-_is_forbidden.patch r f091fee39457e64ebd35410c1cf95e6613816a54 .git/refs/patches/master/cannot_end_in_.patch r f13e243c7c56f39422567a431bccceec8b789596 .git/refs/patches/master/multiple-slashes--are--forbidden.patch r fb1edb753c97ec865ceea316420b1df586caaa2b .git/refs/patches/master/caretisforbidden.patch r fdcb23c3072209bea3d9e0a2594132b936c5347e .git/refs/patches/master/the_sequence_-._is_forbidden.patch r fe07105cd62660f4440ad24b9fc7dfdd9e71d764 .git/refs/patches/master/two_consecutive_dots_(.)_is_forbidden.patch % guilt pop -a All patches popped. guilt-0.36/regression/t-034.sh000077500000000000000000000040251262071220700160540ustar00rootroot00000000000000#!/bin/bash # # Test import-commit # function create_commit { echo $1 >> $1 && git add $1 && git commit -m"$2" } source "$REG_DIR/scaffold" b() { printf "%b" "$1" } cmd setup_git_repo cmd git tag base # Create a series of commits whose first line of the commit message # each violates one of the rules in get-check-ref-format(1). cmd create_commit a "The sequence /. is forbidden." cmd create_commit a "The sequence .lock/ is forbidden." cmd create_commit a "A/component/may/not/end/in/foo.lock" cmd create_commit a "Two consecutive dots (..) is forbidden." cmd create_commit a "Check/multiple/../dots/...../foo..patch" cmd create_commit a "Space is forbidden." cmd create_commit a "Tilde~is~forbidden." cmd create_commit a "Caret^is^forbidden." cmd create_commit a "Colon:is:forbidden." cmd create_commit a `b 'Del\177is\177forbidden.'` # Create a branch and a tag from the current commit, to ensure that # doing so does not affect how the commit is imported. cmd git branch some-branch cmd git tag some-tag cmd create_commit a `b 'Ctrl\001is\002forbidden.'` cmd create_commit a `b 'CR\ris\ralso\rforbidden.'` cmd create_commit a "Question-mark?is?forbidden." cmd create_commit a "Asterisk*is*forbidden." cmd create_commit a "Open[bracket[is[forbidden." cmd create_commit a "Multiple/slashes//are//forbidden." cmd create_commit a "Cannot/end/in/slash/" cmd create_commit a "Cannot end in .." cmd create_commit a "Cannot@{have@{the@{sequence@{at-brace." cmd create_commit a "@" cmd create_commit a "Backslash\\is\\forbidden." # Slash is sometimes allowed; this is not problematic. cmd create_commit a "Can/have/embedded/single/slashes" cmd git log # Import all the commits to guilt. cmd guilt init cmd git config log.decorate short cmd guilt import-commit base..HEAD cmd git config log.decorate no for patch in .git/patches/master/*.patch; do touch -a -m -t "$TOUCH_DATE" "$patch" done # If push and pop works, the names we created are good. cmd guilt push -a cmd git log --decorate cmd git log --decorate some-branch cmd list_files cmd guilt pop -a guilt-0.36/regression/t-035.out000066400000000000000000000453421262071220700162560ustar00rootroot00000000000000% setup_repo % git config guilt.diffstat true %% empty + empty (diffstat=true) % guilt new empty-1 % guilt pop All patches popped. % guilt push Applying patch..empty-1 Patch applied. % guilt new empty-2 % guilt pop Now at empty-1. % guilt push Applying patch..empty-2 Patch applied. % guilt pop Now at empty-1. % guilt fold empty-2 % guilt pop All patches popped. % guilt push Applying patch..empty-1 Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4ea806e306f0228a8ef41f186035e7b04097f1f2 .git/patches/master/status f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty-1 f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d28d87b88c1e24d637e390dc3603cfa7c1715711 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ r bde3d337af70f36836ad606c800d194006f883b3 .git/refs/patches/master/empty-1 % guilt pop All patches popped. % guilt delete -f empty-1 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% empty + nonempty (diffstat=true) % guilt new empty % guilt pop All patches popped. % guilt push Applying patch..empty Patch applied. % guilt new -f -s -m A commit message. nonempty % guilt pop Now at empty. % guilt push Applying patch..nonempty Patch applied. % guilt pop Now at empty. % guilt fold nonempty % guilt pop All patches popped. % guilt push Applying patch..empty Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 15aab0fd8b937eb3bb01841693f35dcb75da2faf .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 683678040eef9334d6329e00d5b9babda3e65b57 .git/patches/master/empty f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a26a22287b500a2a372e42c2bab03599bbe37cdf .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/empty % guilt pop All patches popped. % guilt delete -f empty % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% nonempty + empty (diffstat=true) % guilt new -f -s -m A commit message. nonempty % guilt pop All patches popped. % guilt push Applying patch..nonempty Patch applied. % guilt new empty % guilt pop Now at nonempty. % guilt push Applying patch..empty Patch applied. % guilt pop Now at nonempty. % guilt fold empty % guilt pop All patches popped. % guilt push Applying patch..nonempty Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 683678040eef9334d6329e00d5b9babda3e65b57 .git/patches/master/nonempty f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c47ddc01337e3bb67a9968a8823a5ba12be67f77 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f f7f068d44bf796d0f7cd14d27d1f48d6e659816a .git/patches/master/status r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/nonempty % guilt pop All patches popped. % guilt delete -f nonempty % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% nonempty + nonempty (diffstat=true) % guilt new -f -s -m A commit message. nonempty-1 % guilt pop All patches popped. % guilt push Applying patch..nonempty-1 Patch applied. % guilt new -f -s -m Another commit message. nonempty-2 % guilt pop Now at nonempty-1. % guilt push Applying patch..nonempty-2 Patch applied. % guilt pop Now at nonempty-1. % guilt fold nonempty-2 % guilt pop All patches popped. % guilt push Applying patch..nonempty-1 Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 3b526c794741fb2d6b463f3245ab2f260fa74b7b .git/patches/master/status f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 669c9685ce791098bb3573f80af6d720a3689f80 .git/patches/master/nonempty-1 f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a88f2625f128cfa307a52c8c2e84ed6c32a78d2b .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ r 895dfbc21bde85fcc666a353a6bd32eaec939082 .git/refs/patches/master/nonempty-1 % guilt pop All patches popped. % guilt delete -f nonempty-1 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % git config guilt.diffstat false %% empty + empty (diffstat=false) % guilt new empty-1 % guilt pop All patches popped. % guilt push Applying patch..empty-1 Patch applied. % guilt new empty-2 % guilt pop Now at empty-1. % guilt push Applying patch..empty-2 Patch applied. % guilt pop Now at empty-1. % guilt fold empty-2 % guilt pop All patches popped. % guilt push Applying patch..empty-1 Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4ea806e306f0228a8ef41f186035e7b04097f1f2 .git/patches/master/status f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f d28d87b88c1e24d637e390dc3603cfa7c1715711 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1 f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ r bde3d337af70f36836ad606c800d194006f883b3 .git/refs/patches/master/empty-1 % guilt pop All patches popped. % guilt delete -f empty-1 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% empty + nonempty (diffstat=false) % guilt new empty % guilt pop All patches popped. % guilt push Applying patch..empty Patch applied. % guilt new -f -s -m A commit message. nonempty % guilt pop Now at empty. % guilt push Applying patch..nonempty Patch applied. % guilt pop Now at empty. % guilt fold nonempty % guilt pop All patches popped. % guilt push Applying patch..empty Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 15aab0fd8b937eb3bb01841693f35dcb75da2faf .git/patches/master/status f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a26a22287b500a2a372e42c2bab03599bbe37cdf .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/empty % guilt pop All patches popped. % guilt delete -f empty % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% nonempty + empty (diffstat=false) % guilt new -f -s -m A commit message. nonempty % guilt pop All patches popped. % guilt push Applying patch..nonempty Patch applied. % guilt new empty % guilt pop Now at nonempty. % guilt push Applying patch..empty Patch applied. % guilt pop Now at nonempty. % guilt fold empty % guilt pop All patches popped. % guilt push Applying patch..nonempty Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c47ddc01337e3bb67a9968a8823a5ba12be67f77 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f f7f068d44bf796d0f7cd14d27d1f48d6e659816a .git/patches/master/status r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/nonempty % guilt pop All patches popped. % guilt delete -f nonempty % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status %% nonempty + nonempty (diffstat=false) % guilt new -f -s -m A commit message. nonempty-1 % guilt pop All patches popped. % guilt push Applying patch..nonempty-1 Patch applied. % guilt new -f -s -m Another commit message. nonempty-2 % guilt pop Now at nonempty-1. % guilt push Applying patch..nonempty-2 Patch applied. % guilt pop Now at nonempty-1. % guilt fold nonempty-2 % guilt pop All patches popped. % guilt push Applying patch..nonempty-1 Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 3b526c794741fb2d6b463f3245ab2f260fa74b7b .git/patches/master/status f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1 f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a88f2625f128cfa307a52c8c2e84ed6c32a78d2b .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ r 895dfbc21bde85fcc666a353a6bd32eaec939082 .git/refs/patches/master/nonempty-1 % guilt pop All patches popped. % guilt delete -f nonempty-1 % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status guilt-0.36/regression/t-035.sh000077500000000000000000000020221262071220700160500ustar00rootroot00000000000000#!/bin/bash # # Test the fold code # source "$REG_DIR/scaffold" cmd setup_repo function fixup_time_info { cmd guilt pop touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" cmd guilt push } function empty_patch { cmd guilt new "empty$1" fixup_time_info "empty$1" } function nonempty_patch { if [ "$1" = -2 ]; then msg="Another commit message." else msg="A commit message." fi cmd guilt new -f -s -m "$msg" "nonempty$1" fixup_time_info "nonempty$1" } for using_diffstat in true false; do cmd git config guilt.diffstat $using_diffstat for patcha in empty nonempty; do for patchb in empty nonempty; do if [ $patcha = $patchb ]; then suffixa=-1 suffixb=-2 else suffixa= suffixb= fi echo "%% $patcha + $patchb (diffstat=$using_diffstat)" ${patcha}_patch $suffixa ${patchb}_patch $suffixb cmd guilt pop cmd guilt fold $patchb$suffixb fixup_time_info $patcha$suffixa cmd list_files cmd guilt pop cmd guilt delete -f $patcha$suffixa cmd list_files done done done guilt-0.36/regression/t-050.out000066400000000000000000000024401262071220700162430ustar00rootroot00000000000000% setup_repo % guilt series modify add remove mode % guilt series -v modify add remove mode % guilt push Applying patch..modify Patch applied. % guilt series -v = modify add remove mode % guilt push Applying patch..add Patch applied. % guilt series -v + modify = add remove mode % guilt push Applying patch..remove Patch applied. % guilt series -v + modify + add = remove mode % guilt push Applying patch..mode Patch applied. % guilt series -v + modify + add + remove = mode % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove guilt-0.36/regression/t-050.sh000077500000000000000000000003271262071220700160530ustar00rootroot00000000000000#!/bin/bash # # Test the series code # source "$REG_DIR/scaffold" cmd setup_repo cmd guilt series cmd guilt series -v guilt series | while read n ; do cmd guilt push cmd guilt series -v done cmd list_files guilt-0.36/regression/t-051.out000066400000000000000000001114071262071220700162500ustar00rootroot00000000000000% setup_repo % guilt new first % guilt push modify Applying patch..modify Patch applied. % guilt new second % guilt push add Applying patch..add Patch applied. % guilt new third % guilt push remove Applying patch..remove Patch applied. % guilt new fourth % guilt push mode Applying patch..mode Patch applied. % guilt new fifth % guilt pop -a All patches popped. % guilt guard -l first: modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..first Patch applied. Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt prev mode % guilt next % guilt applied first modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third % guilt select foo % guilt guard -l first: modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..first Patch applied. Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt prev mode % guilt next % guilt applied first modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f c8727042110a9708f7fb3ae224c3a5114d66c8a0 .git/patches/master/series f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards % guilt select -n % guilt guard first +foo % guilt guard -l first: +foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt prev mode % guilt next % guilt applied modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third % guilt select foo % guilt guard -l first: +foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..first Patch applied. Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt prev mode % guilt next % guilt applied first modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards % guilt select -n % guilt select bar % guilt guard -l first: +foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt prev mode % guilt next % guilt applied modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 4a83e5a312b6e25e333400a5ebdf19a297a7ecfc .git/patches/master/series f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards % guilt select -n % guilt guard -l first: +foo modify: second: add: third: remove: fourth: mode: fifth: % guilt guard first -foo % guilt guard -l first: -foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..first Patch applied. Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt prev mode % guilt next % guilt applied first modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third % guilt select foo % guilt guard -l first: -foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt prev mode % guilt next % guilt applied modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a63cf5aa65216db69145c28d10535101b44a958a .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards r 024fabff9d4aac0d1eea8139d3573134f767be6b .git/refs/patches/master/third r 0d1d059051567b5757b275d994803e2ee2c6f249 .git/refs/patches/master/second r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 42dededcea6ab9f9363e05c3ac46d202c9d24fc0 .git/refs/patches/master/add r 45f14f27be3602087c2804a3a49b68715498c4ab .git/refs/patches/master/fifth r 5fe77d7acc8ba70ea6ec7e99ff56ea1ecd31485d .git/refs/patches/master/fourth r a396f79d32fb896c65a1fe0a21cc7fedfc4bca5d .git/refs/patches/master/mode r d6f4e09af372958f1b5989dde565f0f16237f741 .git/refs/patches/master/remove % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 .git/patches/master/guards % guilt select -n % guilt select bar % guilt guard -l first: -foo modify: second: add: third: remove: fourth: mode: fifth: % guilt push -a Applying patch..first Patch applied. Applying patch..modify Patch applied. Applying patch..second Patch applied. Applying patch..add Patch applied. Applying patch..third Patch applied. Applying patch..remove Patch applied. Applying patch..fourth Patch applied. Applying patch..mode Patch applied. Applying patch..fifth Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt prev mode % guilt next % guilt applied first modify second add third remove fourth mode fifth % guilt unapplied % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f a60aaf2a27d522dd432e628418ddea55cd4cbab5 .git/patches/master/status f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards r 1d38670276c004e45fd9b4c53859cd4c035814e3 .git/refs/patches/master/second r 307b673361204c3d78fc9b0074e077468d4bfd17 .git/refs/patches/master/add r 43baa39cb58f15194e065d808836857127402d28 .git/refs/patches/master/modify r 4db486c1851e0ef969f2bf85f7162062365f4b3c .git/refs/patches/master/remove r 6de179deb212843cbd0dbd7f9258cd5313e3a919 .git/refs/patches/master/fifth r 765cc1768834e6e0d5b7647945b488002777aa17 .git/refs/patches/master/fourth r a275c97cdbfa8f77b3326ec9ce8a6ac261ec0b8f .git/refs/patches/master/mode r b9f029c3ce91252944780ceb518385acfd83380e .git/refs/patches/master/third r e879a6edd53fd85ed29fff06f11e0ee091dab94e .git/refs/patches/master/first % guilt pop -a All patches popped. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 03416e9c8dd788d6cb1b318d74ff34f4d6150c44 .git/patches/master/series f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fifth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/first f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/fourth f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/second f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/third f e242ed3bffccdf271b7fbaf34ed72d089537b42f .git/patches/master/guards guilt-0.36/regression/t-051.sh000077500000000000000000000041061262071220700160530ustar00rootroot00000000000000#!/bin/bash # # Test the commands that use get_*_series, while applying guards # source "$REG_DIR/scaffold" cmd setup_repo function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } function std_tests { cmd list_files cmd guilt prev cmd guilt next cmd guilt applied cmd guilt unapplied cmd list_files } # create a couple of dummy (empty) patches strategically placed thoughout # the series cmd guilt new first cmd guilt push modify cmd guilt new second cmd guilt push add cmd guilt new third cmd guilt push remove cmd guilt new fourth cmd guilt push mode cmd guilt new fifth cmd guilt pop -a fixup_time_info first fixup_time_info second fixup_time_info third fixup_time_info fourth fixup_time_info fifth fixup_time_info modify fixup_time_info add fixup_time_info remove fixup_time_info mode p=first # no guarded patches; no guards selected cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # no guarded patches; one guard selected cmd guilt select foo cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one positive guarded patch; no guards selected cmd guilt select -n cmd guilt guard $p +foo cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one positive guarded patch; that guard selected cmd guilt select foo cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one positive guarded patch; different guard selected cmd guilt select -n cmd guilt select bar cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one negative guarded patch; no guards selected cmd guilt select -n cmd guilt guard -l cmd guilt guard $p -foo cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one negative guarded patch; that guard selected cmd guilt select foo cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files # one negative guarded patch; different guard selected cmd guilt select -n cmd guilt select bar cmd guilt guard -l cmd guilt push -a std_tests cmd guilt pop -a cmd list_files guilt-0.36/regression/t-052.out000066400000000000000000000505571262071220700162610ustar00rootroot00000000000000% setup_repo % list_files d .git/patches d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt branch br- Switched to branch "br-" % list_files d .git/patches d .git/patches/br- d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % git checkout master Switched to branch "master" % list_files d .git/patches d .git/patches/br- d .git/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status Applying patch..modify Patch applied. % guilt branch br-modify Switched to branch "guilt/br-modify" % list_files d .git/patches d .git/patches/br- d .git/patches/br-modify d .git/patches/master d .git/refs/patches d .git/refs/patches/br-modify d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify % git checkout guilt/master Switched to branch "guilt/master" % list_files d .git/patches d .git/patches/br- d .git/patches/br-modify d .git/patches/master d .git/refs/patches d .git/refs/patches/br-modify d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify Applying patch..add Patch applied. % guilt branch br-add Switched to branch "guilt/br-add" % list_files d .git/patches d .git/patches/br- d .git/patches/br-add d .git/patches/br-modify d .git/patches/master d .git/refs/patches d .git/refs/patches/br-add d .git/refs/patches/br-modify d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-add/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-add/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/br-add/status f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-add/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-add/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-add/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-add/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add % git checkout guilt/master Switched to branch "guilt/master" % list_files d .git/patches d .git/patches/br- d .git/patches/br-add d .git/patches/br-modify d .git/patches/master d .git/refs/patches d .git/refs/patches/br-add d .git/refs/patches/br-modify d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-add/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-add/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/br-add/status f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/master/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-add/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-add/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-add/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-add/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add Applying patch..remove Patch applied. % guilt branch br-remove Switched to branch "guilt/br-remove" % list_files d .git/patches d .git/patches/br- d .git/patches/br-add d .git/patches/br-modify d .git/patches/br-remove d .git/patches/master d .git/refs/patches d .git/refs/patches/br-add d .git/refs/patches/br-modify d .git/refs/patches/br-remove d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-add/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-remove/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-add/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-remove/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/br-add/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-add/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-remove/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-add/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-remove/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-add/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-remove/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/br-remove/status f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-add/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-remove/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-remove/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-remove/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % git checkout guilt/master Switched to branch "guilt/master" % list_files d .git/patches d .git/patches/br- d .git/patches/br-add d .git/patches/br-modify d .git/patches/br-remove d .git/patches/master d .git/refs/patches d .git/refs/patches/br-add d .git/refs/patches/br-modify d .git/refs/patches/br-remove d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-add/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-remove/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-add/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-remove/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/br-add/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-add/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-remove/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-add/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-remove/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-add/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-remove/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/br-remove/status f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/master/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-add/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-remove/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-remove/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-remove/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove Applying patch..mode Patch applied. % guilt branch br-mode Switched to branch "guilt/br-mode" % list_files d .git/patches d .git/patches/br- d .git/patches/br-add d .git/patches/br-mode d .git/patches/br-modify d .git/patches/br-remove d .git/patches/master d .git/refs/patches d .git/refs/patches/br-add d .git/refs/patches/br-mode d .git/refs/patches/br-modify d .git/refs/patches/br-remove d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-add/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-mode/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-modify/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/br-remove/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-add/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-mode/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-modify/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/br-remove/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 6e9645b29c7233ecdf1494834e83c67a37464548 .git/patches/br-add/status f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/br-mode/status f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 7b80669540a0ba5ec6098f50bb7923921278e85a .git/patches/br-modify/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-add/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-mode/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-modify/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/br-remove/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-add/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-mode/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-modify/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/br-remove/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-add/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-mode/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-modify/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/br-remove/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/br-/status f f322f08d907e3737a4321b0ec90bc545f71af7cf .git/patches/br-remove/status r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-add/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-mode/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-modify/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/br-remove/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-add/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-mode/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/br-remove/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/br-mode/mode r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-mode/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/br-remove/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % git checkout guilt/master Switched to branch "guilt/master" guilt-0.36/regression/t-052.sh000077500000000000000000000005511262071220700160540ustar00rootroot00000000000000#!/bin/bash # # Test the commands that use get_*_series, while applying guards # source "$REG_DIR/scaffold" cmd setup_repo for x in "" modify add remove mode ; do cmd list_files [ "$x" != "" ] && guilt push "$x" cmd guilt branch br-$x cmd list_files if [ "$x" != "" ] then cmd git checkout guilt/master else cmd git checkout master fi done guilt-0.36/regression/t-060.out000066400000000000000000000042141262071220700162450ustar00rootroot00000000000000% setup_repo % guilt new subdir % mkdir blah % touch blah/sub % guilt add blah/sub % guilt refresh Patch subdir refreshed % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt files def % guilt files -v def % guilt files -l mode def % guilt files -v -l [mode] def % guilt files -a blah/sub def abd abd def % guilt files -l -a subdir blah/sub modify def add abd remove abd mode def % guilt files -v -a subdir + blah/sub modify def add + abd remove - abd mode def % guilt files -v -l -a [subdir] blah/sub [modify] def [add] abd [remove] abd [mode] def % dd if=/dev/zero of=file.bin bs=1 count=1024 1024+0 records in 1024+0 records out 1024 bytes (1.0 kB) copied % guilt files def % guilt files -v def % guilt files -l mode def % guilt files -v -l [mode] def % guilt files -a blah/sub def abd abd def % guilt files -l -a subdir blah/sub modify def add abd remove abd mode def % guilt files -v -a subdir + blah/sub modify def add + abd remove - abd mode def % guilt files -v -l -a [subdir] blah/sub [modify] def [add] abd [remove] abd [mode] def % git add file.bin % guilt files def file.bin % guilt files -v def + file.bin % guilt files -l mode def mode file.bin % guilt files -v -l [mode] def [mode] file.bin % guilt files -a blah/sub def abd abd def file.bin % guilt files -l -a subdir blah/sub modify def add abd remove abd mode def mode file.bin % guilt files -v -a subdir + blah/sub modify def add + abd remove - abd mode def + file.bin % guilt files -v -l -a [subdir] blah/sub [modify] def [add] abd [remove] abd [mode] def [mode] file.bin % git rm def rm 'def' % guilt files def file.bin % guilt files -v - def + file.bin % guilt files -l mode def mode file.bin % guilt files -v -l [mode] def [mode] file.bin % guilt files -a blah/sub def abd abd def file.bin % guilt files -l -a subdir blah/sub modify def add abd remove abd mode def mode file.bin % guilt files -v -a subdir + blah/sub modify def add + abd remove - abd mode - def + file.bin % guilt files -v -l -a [subdir] blah/sub [modify] def [add] abd [remove] abd [mode] def [mode] file.bin guilt-0.36/regression/t-060.sh000077500000000000000000000014631262071220700160560ustar00rootroot00000000000000#!/bin/bash # # Test the guilt files code # source "$REG_DIR/scaffold" cmd setup_repo function guiltfiles_args { cat << DONE -v -l -v -l -a -l -a -v -a -v -l -a DONE } # create a patch that contains a file in a subdirectory cmd guilt new subdir cmd mkdir blah cmd touch blah/sub cmd guilt add blah/sub cmd guilt refresh # push em all for tesing cmd guilt push -a # # actual tests # guiltfiles_args | while read args; do cmd guilt files $args done # # test that changes in the index are also considered # cmd dd if=/dev/zero of=file.bin bs=1 count=1024 | filter_dd guiltfiles_args | while read args; do cmd guilt files $args done cmd git add file.bin guiltfiles_args | while read args; do cmd guilt files $args done cmd git rm def guiltfiles_args | while read args; do cmd guilt files $args done guilt-0.36/regression/t-061.out000066400000000000000000000460271262071220700162560ustar00rootroot00000000000000% setup_repo % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % git update-ref refs/heads/master refs/heads/guilt/master % git symbolic-ref HEAD refs/heads/master % git update-ref -d refs/heads/guilt/master % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % guilt pop Now at remove. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at remove. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at add. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt push Applying patch..remove Patch applied. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at add. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop Now at modify. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt push Applying patch..add Patch applied. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop Now at modify. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push Applying patch..modify Patch applied. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt pop No patches applied. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push Applying patch..modify Patch applied. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % git update-ref refs/heads/master refs/heads/guilt/master % git symbolic-ref HEAD refs/heads/master % git update-ref -d refs/heads/guilt/master % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop -a All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push add Applying patch..modify Patch applied. Applying patch..add Patch applied. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % git update-ref refs/heads/master refs/heads/guilt/master % git symbolic-ref HEAD refs/heads/master % git update-ref -d refs/heads/guilt/master % guilt branch topic Switched to branch "topic" % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify % guilt pop -a All patches popped. % guilt push Applying patch..modify Patch applied. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/guilt/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify % guilt pop -a All patches popped. % git checkout master Switched to branch "master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % git update-ref refs/heads/master refs/heads/guilt/master % git symbolic-ref HEAD refs/heads/master % git update-ref -d refs/heads/guilt/master % guilt branch topic Switched to branch "topic" % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove % guilt pop -a All patches popped. % git checkout master Switched to branch "master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt branch topic Switched to branch "topic" % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic % list_files d .git/patches d .git/patches/master d .git/patches/topic d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/topic/status % guilt pop -a No patches applied. % git checkout master Switched to branch "master" % guilt pop -a No patches applied. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt branch topic Switched to branch "guilt/topic" % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/topic d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove % list_files d .git/patches d .git/patches/master d .git/patches/topic d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/topic/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/topic/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/topic/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/topic/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/topic/remove % guilt pop -a All patches popped. % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop -a No patches applied. % git checkout guilt/master Switched to branch "guilt/master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt new newpatch % git for-each-ref --format=%(refname) refs/heads/guilt/master refs/heads/master refs/patches/master/newpatch % guilt pop All patches popped. % guilt push Applying patch..newpatch Patch applied. % git for-each-ref 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/guilt/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/patches/master/newpatch % git branch * guilt/master master % guilt applied newpatch % guilt commit -a % git for-each-ref 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master % git branch * master % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt applied modify add remove mode % git branch * guilt/master master % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/guilt/master 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master 5effcbeb303e8433935151d8c69f3bf63db1e8ef commit refs/patches/master/add fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode 9509f22e2e627756d87b42432931c45955b74234 commit refs/patches/master/modify 9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove % guilt commit -n 2 % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/guilt/master 5effcbeb303e8433935151d8c69f3bf63db1e8ef commit refs/heads/master fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode 9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove % git branch * guilt/master master % guilt commit -n 2 % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/master % git branch * master % guilt series guilt-0.36/regression/t-061.sh000077500000000000000000000062701262071220700160600ustar00rootroot00000000000000#!/bin/bash # # Test the branch-switching upgrade code # source $REG_DIR/scaffold old_style_branch() { # Modify the refs so that it looks as if the patch series was applied # by an old version of guilt. cmd git update-ref refs/heads/$1 refs/heads/guilt/$1 cmd git symbolic-ref HEAD refs/heads/$1 cmd git update-ref -d refs/heads/guilt/$1 } remove_topic() { cmd guilt pop -a if git rev-parse --verify --quiet guilt/master >/dev/null; then cmd git checkout guilt/master else cmd git checkout master fi cmd guilt pop -a cmd git branch -d $1 cmd rm -r .git/patches/$1 cmd git for-each-ref cmd list_files } function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } cmd setup_repo cmd guilt push -a cmd list_files cmd git for-each-ref # Pop and push patches. Check that the repo is converted to new-style # refs when no patches are applied and a patch is pushed. old_style_branch master cmd git for-each-ref cmd list_files for i in `seq 5`; do if [ $i -ge 5 ]; then shouldfail guilt pop else cmd guilt pop fi cmd git for-each-ref cmd guilt push cmd git for-each-ref cmd guilt pop cmd git for-each-ref done # Check that "pop -a" does the right thing. cmd guilt push -a old_style_branch master cmd git for-each-ref cmd guilt pop -a cmd git for-each-ref # Check that pushing two patches converts the repo to now-style (since # it currently has no patches applied). cmd guilt push add cmd git for-each-ref # Check guilt branch with a few patches applied. old_style_branch master cmd guilt branch topic cmd git for-each-ref # Check that the topic branch is converted to new-style. cmd guilt pop -a cmd guilt push cmd git for-each-ref remove_topic topic # Check guilt branch with the full patch series applied. cmd guilt push -a old_style_branch master cmd guilt branch topic cmd git for-each-ref remove_topic topic # Check guilt branch with no patches applied. # This gives us a new-style checkout. cmd guilt branch topic cmd git for-each-ref cmd list_files remove_topic topic # Check guilt branch in a new-style directory with all patches # applied. (Strictly speaking, this test should probably move to a # file devoted to testing "guilt branch".) cmd guilt push -a cmd guilt branch topic cmd git for-each-ref cmd list_files cmd guilt pop -a cmd git for-each-ref remove_topic topic # Check that "guilt new" does the right thing when no patches are # applied. (Strictly speaking, this test should maybe move to # t-025.sh). cmd guilt new newpatch cmd git for-each-ref '--format=%(refname)' cmd guilt pop fixup_time_info newpatch cmd guilt push cmd git for-each-ref # Check that "guilt commit" does the right thing when committing all # applied patches. (Strictly speaking, this test should maybe move to # t-030.sh). cmd git branch cmd guilt applied cmd guilt commit -a cmd git for-each-ref cmd git branch # Check that "guilt commit" does the right thing when committing only # a few of the applied patches. (Strictly speaking, this test should # maybe move to t-030.sh). cmd guilt push -a cmd guilt applied cmd git branch cmd git for-each-ref cmd guilt commit -n 2 cmd git for-each-ref cmd git branch cmd guilt commit -n 2 cmd git for-each-ref cmd git branch cmd guilt series guilt-0.36/regression/t-062.out000066400000000000000000000407351262071220700162570ustar00rootroot00000000000000% setup_repo % git config guilt.reusebranch true % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at remove. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt push Applying patch..mode Patch applied. % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at remove. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at add. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt push Applying patch..remove Patch applied. % git for-each-ref ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop Now at add. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop Now at modify. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt push Applying patch..add Patch applied. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop Now at modify. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push Applying patch..modify Patch applied. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt pop No patches applied. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push Applying patch..modify Patch applied. % git for-each-ref 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt pop All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop -a All patches popped. % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % guilt push add Applying patch..modify Patch applied. Applying patch..add Patch applied. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify % guilt branch topic Switched to branch "topic" % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify % guilt pop -a All patches popped. % guilt push Applying patch..modify Patch applied. % git for-each-ref 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/heads/master 33633e7a1aa31972f125878baf7807be57b1672d commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify % guilt pop -a All patches popped. % git checkout master Switched to branch "master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt branch topic Switched to branch "topic" % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove % guilt pop -a All patches popped. % git checkout master Switched to branch "master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt branch topic Switched to branch "topic" % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic % list_files d .git/patches d .git/patches/master d .git/patches/topic d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/topic/status % guilt pop -a No patches applied. % git checkout master Switched to branch "master" % guilt pop -a No patches applied. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt branch topic Switched to branch "topic" % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/topic/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/topic/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/topic/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/topic/remove % list_files d .git/patches d .git/patches/master d .git/patches/topic d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/topic/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/topic/remove f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/master/status f 71596bf71b72c2717e1aee378aabefbfa19ab7c8 .git/patches/topic/status f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/topic/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/topic/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/topic/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/master/modify r 33633e7a1aa31972f125878baf7807be57b1672d .git/refs/patches/topic/modify r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/master/add r 37d588cc39848368810e88332bd03b083f2ce3ac .git/refs/patches/topic/add r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/master/mode r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba .git/refs/patches/topic/mode r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/master/remove r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 .git/refs/patches/topic/remove % guilt pop -a All patches popped. % git for-each-ref ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/heads/master d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/topic 37d588cc39848368810e88332bd03b083f2ce3ac commit refs/patches/master/add ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba commit refs/patches/master/mode 33633e7a1aa31972f125878baf7807be57b1672d commit refs/patches/master/modify ffb7faa126a6d91bcdd44a494f76b96dd860b8b9 commit refs/patches/master/remove % guilt pop -a No patches applied. % git checkout master Switched to branch "master" % guilt pop -a All patches popped. % git branch -d topic Deleted branch topic (was d485041). % rm -r .git/patches/topic % git for-each-ref d4850419ccc1146c7169f500725ce504b9774ed0 commit refs/heads/master % list_files d .git/patches d .git/patches/master d .git/refs/patches d .git/refs/patches/master d .git/refs/patches/topic f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status % guilt new newpatch % git for-each-ref --format=%(refname) refs/heads/master refs/patches/master/newpatch % guilt pop All patches popped. % guilt push Applying patch..newpatch Patch applied. % git for-each-ref 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/patches/master/newpatch % git branch * master % guilt applied newpatch % guilt commit -a % git for-each-ref 25465dc1687f3833ecbd4e8bca437e522d7026db commit refs/heads/master % git branch * master % guilt push -a Applying patch..modify Patch applied. Applying patch..add Patch applied. Applying patch..remove Patch applied. Applying patch..mode Patch applied. % guilt applied modify add remove mode % git branch * master % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/master 5effcbeb303e8433935151d8c69f3bf63db1e8ef commit refs/patches/master/add fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode 9509f22e2e627756d87b42432931c45955b74234 commit refs/patches/master/modify 9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove % guilt commit -n 2 % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/master fefbdcef61022d473838926619f31e030dd04fdc commit refs/patches/master/mode 9cbe2fc643b1a9e2179a8738f80424a1c2aa202d commit refs/patches/master/remove % git branch * master % guilt commit -n 2 % git for-each-ref fefbdcef61022d473838926619f31e030dd04fdc commit refs/heads/master % git branch * master % guilt series guilt-0.36/regression/t-062.sh000077500000000000000000000053361262071220700160630ustar00rootroot00000000000000#!/bin/bash # # Test that the guilt.reusebranch=true setting works. # source $REG_DIR/scaffold remove_topic() { cmd guilt pop -a if git rev-parse --verify --quiet guilt/master >/dev/null; then cmd git checkout guilt/master else cmd git checkout master fi cmd guilt pop -a cmd git branch -d $1 cmd rm -r .git/patches/$1 cmd git for-each-ref cmd list_files } function fixup_time_info { touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" } cmd setup_repo cmd git config guilt.reusebranch true cmd guilt push -a cmd list_files cmd git for-each-ref for i in `seq 5`; do if [ $i -ge 5 ]; then shouldfail guilt pop else cmd guilt pop fi cmd git for-each-ref cmd guilt push cmd git for-each-ref cmd guilt pop cmd git for-each-ref done # Check that "pop -a" properly pops all patches. cmd guilt push -a cmd git for-each-ref cmd guilt pop -a cmd git for-each-ref # Check that pushing two patches converts the repo to now-style (since # it currently has no patches applied). cmd guilt push add cmd git for-each-ref # Check guilt branch with a few patches applied. cmd guilt branch topic cmd git for-each-ref # Check that the topic branch is converted to new-style. cmd guilt pop -a cmd guilt push cmd git for-each-ref remove_topic topic # Check guilt branch with the full patch series applied. cmd guilt push -a cmd guilt branch topic cmd git for-each-ref remove_topic topic # Check guilt branch with no patches applied. # This gives us a new-style checkout. cmd guilt branch topic cmd git for-each-ref cmd list_files remove_topic topic # Check guilt branch in a new-style directory with all patches # applied. (Strictly speaking, this test should probably move to a # file devoted to testing "guilt branch".) cmd guilt push -a cmd guilt branch topic cmd git for-each-ref cmd list_files cmd guilt pop -a cmd git for-each-ref remove_topic topic # Check that "guilt new" does the right thing when no patches are # applied. (Strictly speaking, this test should maybe move to # t-025.sh). cmd guilt new newpatch cmd git for-each-ref '--format=%(refname)' cmd guilt pop fixup_time_info newpatch cmd guilt push cmd git for-each-ref # Check that "guilt commit" does the right thing when committing all # applied patches. (Strictly speaking, this test should maybe move to # t-030.sh). cmd git branch cmd guilt applied cmd guilt commit -a cmd git for-each-ref cmd git branch # Check that "guilt commit" does the right thing when committing only # a few of the applied patches. (Strictly speaking, this test should # maybe move to t-030.sh). cmd guilt push -a cmd guilt applied cmd git branch cmd git for-each-ref cmd guilt commit -n 2 cmd git for-each-ref cmd git branch cmd guilt commit -n 2 cmd git for-each-ref cmd git branch cmd guilt series guilt-0.36/uninstall000077500000000000000000000002731262071220700145260ustar00rootroot00000000000000#!/bin/sh # # Copyright (c) 2007 Nur Hussein # if [ $# -lt 2 ]; then echo "Usage: $0 ..." >&2 exit 1 fi PRE=$1 shift (cd $PRE; rm "$@")