From: Junio C Hamano Date: Mon, 3 Nov 2008 00:36:40 +0000 (-0800) Subject: Merge branch 'maint' X-Git-Tag: v1.6.1-rc1~93 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/84cdd3c635280c42ae42009c4be020ef2c30ba7c?ds=inline;hp=-c Merge branch 'maint' * maint: Add reference for status letters in documentation. Document that git-log takes --all-match. Update draft 1.6.0.4 release notes --- 84cdd3c635280c42ae42009c4be020ef2c30ba7c diff --combined Documentation/rev-list-options.txt index 0ce916a188,5df35ce519..966276b169 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@@ -174,6 -174,10 +174,10 @@@ endif::git-rev-list[ Limit the commits output to ones with log message that matches the specified pattern (regular expression). + --all-match:: + Limit the commits output to ones that match all given --grep, + --author and --committer instead of ones that match at least one. + -i:: --regexp-ignore-case:: @@@ -409,48 -413,6 +413,48 @@@ Note that without '\--full-history', th one of the parents is TREESAME, we follow only that one, so the other sides of the merge are never walked. +Finally, there is a fourth simplification mode available: + +--simplify-merges:: + + First, build a history graph in the same way that + '\--full-history' with parent rewriting does (see above). ++ +Then simplify each commit `C` to its replacement `C'` in the final +history according to the following rules: ++ +-- +* Set `C'` to `C`. ++ +* Replace each parent `P` of `C'` with its simplification `P'`. In + the process, drop parents that are ancestors of other parents, and + remove duplicates. ++ +* If after this parent rewriting, `C'` is a root or merge commit (has + zero or >1 parents), a boundary commit, or !TREESAME, it remains. + Otherwise, it is replaced with its only parent. +-- ++ +The effect of this is best shown by way of comparing to +'\--full-history' with parent rewriting. The example turns into: ++ +----------------------------------------------------------------------- + .-A---M---N---O + / / / + I B D + \ / / + `---------' +----------------------------------------------------------------------- ++ +Note the major differences in `N` and `P` over '\--full-history': ++ +-- +* `N`'s parent list had `I` removed, because it is an ancestor of the + other parent `M`. Still, `N` remained because it is !TREESAME. ++ +* `P`'s parent list similarly had `I` removed. `P` was then + removed completely, because it had one parent and is TREESAME. +-- ifdef::git-rev-list[] Bisection Helpers diff --combined diffcore.h index 713cca785c,1ebfdae8b8..5b634585e8 --- a/diffcore.h +++ b/diffcore.h @@@ -22,8 -22,6 +22,8 @@@ #define MINIMUM_BREAK_SIZE 400 /* do not break a file smaller than this */ +struct userdiff_driver; + struct diff_filespec { unsigned char sha1[20]; char *path; @@@ -42,10 -40,8 +42,10 @@@ #define DIFF_FILE_VALID(spec) (((spec)->mode) != 0) unsigned should_free : 1; /* data should be free()'ed */ unsigned should_munmap : 1; /* data should be munmap()'ed */ - unsigned checked_attr : 1; - unsigned is_binary : 1; /* data should be considered "binary" */ + + struct userdiff_driver *driver; + /* data should be considered "binary"; -1 means "don't know yet" */ + int is_binary; }; extern struct diff_filespec *alloc_filespec(const char *); @@@ -62,7 -58,7 +62,7 @@@ struct diff_filepair struct diff_filespec *one; struct diff_filespec *two; unsigned short int score; - char status; /* M C R N D U (see Documentation/diff-format.txt) */ + char status; /* M C R A D U etc. (see Documentation/diff-format.txt or DIFF_STATUS_* in diff.h) */ unsigned broken_pair : 1; unsigned renamed_pair : 1; unsigned is_unmerged : 1;