* [PATCH 0/4] Repository format version check series. @ 2005-11-26 1:15 Junio C Hamano 2005-11-27 10:56 ` What's in master and pu (aka when will 1.0rc4 be out) Junio C Hamano 2005-11-29 6:42 ` [PATCH 0/4] Repository format version check series Martin Atukunda 0 siblings, 2 replies; 8+ messages in thread From: Junio C Hamano @ 2005-11-26 1:15 UTC (permalink / raw) To: git This series is what I've been cooking for the past several days, partly based on patch from Martin Atukunda but with hopefully smaller impact. [PATCH 1/4] Repository format version check. [PATCH 2/4] Check repository format version in enter_repo(). [PATCH 3/4] init-db: check template and repository format. [PATCH 4/4] setup_git_directory(): check repository format version. The first in the series adds the core.repositoryformatversion configuration item. The current repository format version is defined as version 0, and is the same as not having that in the configuration file. The second one adds a repository format version check to enter_repo(). This function is used to verify the path given by the user, either from the command line or over the network, is a valid git repository by daemon, upload-pack (which runs on the other end when you run fetch-pack or clone-pack), and receive-pack (which runs on the other end when you run send-pack). The third one makes sure we do not reinitialize a repository whose format version we do not understand, do not copy template files from unmatching version into a new repository, and record the repository format version in a newly created repository. The last bit in the series adds the same check code to setup_git_directory(). Along with the earlier change to git-sh-setup that uses git-var to verify the repository, this gives the shell scripts the same repository format version check. I'll push this out to the "master" sometime over the weekend, and hopefully merge it into "maint" and cut the next 1.0rc on Wednesday. Let's hope that will be the last 1.0rc. ^ permalink raw reply [flat|nested] 8+ messages in thread
* What's in master and pu (aka when will 1.0rc4 be out) 2005-11-26 1:15 [PATCH 0/4] Repository format version check series Junio C Hamano @ 2005-11-27 10:56 ` Junio C Hamano 2005-11-27 13:11 ` Timo Hirvonen 2005-11-29 6:42 ` [PATCH 0/4] Repository format version check series Martin Atukunda 1 sibling, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2005-11-27 10:56 UTC (permalink / raw) To: git Junio C Hamano <junkio@cox.net> writes: > This series is what I've been cooking for the past several days, > partly based on patch from Martin Atukunda but with hopefully > smaller impact. > > [PATCH 1/4] Repository format version check. > [PATCH 2/4] Check repository format version in enter_repo(). > [PATCH 3/4] init-db: check template and repository format. > [PATCH 4/4] setup_git_directory(): check repository format version. And they are now in the master branch, along with a couple of bugfixes I received in the last couple of days. I've given them some testing and believe they are in good enough shape for 1.0 futureproofing. Bug reports with reproduction recipe and/or patch are most welcomed. Cooking in the proposed updates branch is the 8-series "work from subdirectory" patch I posted yesterday, with some polishing based on suggestion from Linus. The ls-tree rework is not included at this point, neither is the git-sh-setup, both of which unfortunately have wider impact than I feel comfortable to swallow in one day. I am hoping to base the next "maint" branch update, probably on Wednesday, on what is in "pu" tonight, with safer updates I will receive from the list (Documentation fixes and updates, and archimport updates from Eric and Martin are the candidates). That will be tagged as 1.0rc4 and hopefully be the last 1.0rc, which means no more major feature/semantics changes after that until 1.0 --- famous last words. So I anticipate that many of the barebone Porcelain commands that insist on running from the toplevel will ship the way they are in 1.0. If you run "git grep git-sh-setup 'git*sh'", you will notice that most of them are whole-tree operations anyway, so not much is lost [*1*]. [Footnote] *1* Bisecting only in a subdirectory might be an interesting thing to do, hunting down a bug in a subsystem, but usually a subsystem has at least two relevant subdirectories (source and include file trees) ;-). I suspect that it would be trivial to convert whole-repository operations such as count-objects, prune, and repack to work from subdirectory, although the value of that is dubious. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What's in master and pu (aka when will 1.0rc4 be out) 2005-11-27 10:56 ` What's in master and pu (aka when will 1.0rc4 be out) Junio C Hamano @ 2005-11-27 13:11 ` Timo Hirvonen 2005-11-27 19:32 ` Linus Torvalds 0 siblings, 1 reply; 8+ messages in thread From: Timo Hirvonen @ 2005-11-27 13:11 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On Sun, 27 Nov 2005 02:56:21 -0800 Junio C Hamano <junkio@cox.net> wrote: > *1* Bisecting only in a subdirectory might be an interesting > thing to do, hunting down a bug in a subsystem, but usually a > subsystem has at least two relevant subdirectories (source and > include file trees) ;-). Hmm.. would something like git-bisect --include drivers/char/drm/ --include include/ ... be easy to implement? That command would limit bisecting to only the commits that have changed files under those two directories. -- http://onion.dynserv.net/~timo/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What's in master and pu (aka when will 1.0rc4 be out) 2005-11-27 13:11 ` Timo Hirvonen @ 2005-11-27 19:32 ` Linus Torvalds 2005-11-27 21:08 ` Junio C Hamano 2005-11-28 1:51 ` [PATCH] bisect: quote pathnames for eval safety Junio C Hamano 0 siblings, 2 replies; 8+ messages in thread From: Linus Torvalds @ 2005-11-27 19:32 UTC (permalink / raw) To: Timo Hirvonen; +Cc: Junio C Hamano, git On Sun, 27 Nov 2005, Timo Hirvonen wrote: > > Hmm.. would something like > > git-bisect --include drivers/char/drm/ --include include/ ... > > be easy to implement? That command would limit bisecting to only the > commits that have changed files under those two directories. Heh. It was surprisingly easy to do. The syntax is git bisect start <pathspec> followed by all the normal "git bisect good/bad" stuff. Almost totally untested, and I guarantee that if your pathnames have spaces in them (or your GIT_DIR has spaces in it) this won't work. I don't know how to fix that, my shell programming isn't good enough. This involves small changes to make "git-rev-list --bisect" work in the presense of a pathspec limiter, and then truly trivial (and that's the broken part) changes to make "git bisect" save away and use the pathspec. I tried one bisection, and a "git bisect visualize", and it all looked correct. But hey, don't be surprised if it has problems. Linus --- diff --git a/git-bisect.sh b/git-bisect.sh index d92993b..2455f00 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -33,7 +33,6 @@ bisect_autostart() { } bisect_start() { - case "$#" in 0) ;; *) usage ;; esac # # Verify HEAD. If we were bisecting before this, reset to the # top-of-line master first! @@ -57,7 +56,8 @@ bisect_start() { rm -f "$GIT_DIR/refs/heads/bisect" rm -rf "$GIT_DIR/refs/bisect/" mkdir "$GIT_DIR/refs/bisect" - echo "git-bisect start" >"$GIT_DIR/BISECT_LOG" + echo "git-bisect start $@" >"$GIT_DIR/BISECT_LOG" + echo "$@" > "$GIT_DIR/BISECT_NAMES" } bisect_bad() { @@ -121,7 +121,7 @@ bisect_next() { bad=$(git-rev-parse --verify refs/bisect/bad) && good=$(git-rev-parse --sq --revs-only --not \ $(cd "$GIT_DIR" && ls refs/bisect/good-*)) && - rev=$(eval "git-rev-list --bisect $good $bad") || exit + rev=$(eval "git-rev-list --bisect $good $bad -- $(cat $GIT_DIR/BISECT_NAMES)") || exit if [ -z "$rev" ]; then echo "$bad was both good and bad" exit 1 @@ -131,7 +131,7 @@ bisect_next() { git-diff-tree --pretty $rev exit 0 fi - nr=$(eval "git-rev-list $rev $good" | wc -l) || exit + nr=$(eval "git-rev-list $rev $good -- $(cat $GIT_DIR/BISECT_NAMES)" | wc -l) || exit echo "Bisecting: $nr revisions left to test after this" echo "$rev" > "$GIT_DIR/refs/heads/new-bisect" git checkout new-bisect || exit @@ -142,7 +142,7 @@ bisect_next() { bisect_visualize() { bisect_next_check fail - gitk bisect/bad --not `cd "$GIT_DIR/refs" && echo bisect/good-*` + gitk bisect/bad --not `cd "$GIT_DIR/refs" && echo bisect/good-*` -- $(cat $GIT_DIR/BISECT_NAMES) } bisect_reset() { diff --git a/rev-list.c b/rev-list.c index e17f928..8020d97 100644 --- a/rev-list.c +++ b/rev-list.c @@ -350,7 +350,8 @@ static int count_distance(struct commit_ if (commit->object.flags & (UNINTERESTING | COUNTED)) break; - nr++; + if (!paths || (commit->object.flags & TREECHANGE)) + nr++; commit->object.flags |= COUNTED; p = commit->parents; entry = p; @@ -362,6 +363,7 @@ static int count_distance(struct commit_ } } } + return nr; } @@ -382,15 +384,20 @@ static struct commit_list *find_bisectio nr = 0; p = list; while (p) { - nr++; + if (!paths || (p->item->object.flags & TREECHANGE)) + nr++; p = p->next; } closest = 0; best = list; - p = list; - while (p) { - int distance = count_distance(p); + for (p = list; p; p = p->next) { + int distance; + + if (paths && !(p->item->object.flags & TREECHANGE)) + continue; + + distance = count_distance(p); clear_distance(list); if (nr - distance < distance) distance = nr - distance; @@ -398,7 +405,6 @@ static struct commit_list *find_bisectio best = p; closest = distance; } - p = p->next; } if (best) best->next = NULL; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: What's in master and pu (aka when will 1.0rc4 be out) 2005-11-27 19:32 ` Linus Torvalds @ 2005-11-27 21:08 ` Junio C Hamano 2005-11-28 1:51 ` [PATCH] bisect: quote pathnames for eval safety Junio C Hamano 1 sibling, 0 replies; 8+ messages in thread From: Junio C Hamano @ 2005-11-27 21:08 UTC (permalink / raw) To: Linus Torvalds; +Cc: Timo Hirvonen, git Linus Torvalds <torvalds@osdl.org> writes: > The syntax is > > git bisect start <pathspec> > > followed by all the normal "git bisect good/bad" stuff. I love how I can just say "this might be interesting" and find your message in my mailbox next morning [*1*] ;-). This would be useful to cut down the number of bisection needed to reach the culprit if the initial guess is correct as to which part of the tree is involved. [Reference] *1* http://marc.theaimsgroup.com/?l=git&m=111669620826189 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] bisect: quote pathnames for eval safety. 2005-11-27 19:32 ` Linus Torvalds 2005-11-27 21:08 ` Junio C Hamano @ 2005-11-28 1:51 ` Junio C Hamano 2005-11-28 2:12 ` Junio C Hamano 1 sibling, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2005-11-28 1:51 UTC (permalink / raw) To: Linus Torvalds; +Cc: Timo Hirvonen, git Linus Torvalds <torvalds@osdl.org> writes: > Almost totally untested, and I guarantee that if your pathnames have > spaces in them (or your GIT_DIR has spaces in it) this won't work. I don't > know how to fix that, my shell programming isn't good enough. Like this? I've placed the bisect patch with this in the proposed updates. --- git-bisect.sh | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) applies-to: 7da44ab45773e0a424c1e08c838c1f6deeb6ceb2 82c8f5bed2ae61f1f368cfca84f6b0194b1ad208 diff --git a/git-bisect.sh b/git-bisect.sh index 2455f00..d4196f9 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -1,9 +1,16 @@ #!/bin/sh . git-sh-setup +sq() { + for x + do + echo "$x" | sed -e "s/'/'\\\\''/g" -e "s/^/'/" -e "s/\$/'/" + done +} + usage() { echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize] -git bisect start reset bisect state and start bisection. +git bisect start [<pathspec>] reset bisect state and start bisection. git bisect bad [<rev>] mark <rev> a known-bad revision. git bisect good [<rev>...] mark <rev>... known-good revisions. git bisect next find next bisection to test and check it out. @@ -56,8 +63,8 @@ bisect_start() { rm -f "$GIT_DIR/refs/heads/bisect" rm -rf "$GIT_DIR/refs/bisect/" mkdir "$GIT_DIR/refs/bisect" - echo "git-bisect start $@" >"$GIT_DIR/BISECT_LOG" - echo "$@" > "$GIT_DIR/BISECT_NAMES" + sq git-bisect start "$@" >"$GIT_DIR/BISECT_LOG" + sq "$@" >"$GIT_DIR/BISECT_NAMES" } bisect_bad() { @@ -142,7 +149,8 @@ bisect_next() { bisect_visualize() { bisect_next_check fail - gitk bisect/bad --not `cd "$GIT_DIR/refs" && echo bisect/good-*` -- $(cat $GIT_DIR/BISECT_NAMES) + not=`cd "$GIT_DIR/refs" && echo bisect/good-*` + eval gitk bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES") } bisect_reset() { --- 0.99.9.GIT ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] bisect: quote pathnames for eval safety. 2005-11-28 1:51 ` [PATCH] bisect: quote pathnames for eval safety Junio C Hamano @ 2005-11-28 2:12 ` Junio C Hamano 0 siblings, 0 replies; 8+ messages in thread From: Junio C Hamano @ 2005-11-28 2:12 UTC (permalink / raw) To: Linus Torvalds; +Cc: Timo Hirvonen, git Junio C Hamano <junkio@cox.net> writes: > Linus Torvalds <torvalds@osdl.org> writes: > >> Almost totally untested, and I guarantee that if your pathnames have >> spaces in them (or your GIT_DIR has spaces in it) this won't work. I don't >> know how to fix that, my shell programming isn't good enough. > > Like this? I've placed the bisect patch with this in the > proposed updates. Not like that ;-). Fixed one is in pu. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] Repository format version check series. 2005-11-26 1:15 [PATCH 0/4] Repository format version check series Junio C Hamano 2005-11-27 10:56 ` What's in master and pu (aka when will 1.0rc4 be out) Junio C Hamano @ 2005-11-29 6:42 ` Martin Atukunda 1 sibling, 0 replies; 8+ messages in thread From: Martin Atukunda @ 2005-11-29 6:42 UTC (permalink / raw) To: git On Fri, Nov 25, 2005 at 05:15:02PM -0800, Junio C Hamano wrote: > This series is what I've been cooking for the past several days, > partly based on patch from Martin Atukunda but with hopefully > smaller impact. > > [PATCH 1/4] Repository format version check. > [PATCH 2/4] Check repository format version in enter_repo(). > [PATCH 3/4] init-db: check template and repository format. > [PATCH 4/4] setup_git_directory(): check repository format version. This is just to confirm that this patch series passed the tests on my end. Good work. - Martin - -- Due to a shortage of devoted followers, the production of great leaders has been discontinued. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-11-29 6:43 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-11-26 1:15 [PATCH 0/4] Repository format version check series Junio C Hamano 2005-11-27 10:56 ` What's in master and pu (aka when will 1.0rc4 be out) Junio C Hamano 2005-11-27 13:11 ` Timo Hirvonen 2005-11-27 19:32 ` Linus Torvalds 2005-11-27 21:08 ` Junio C Hamano 2005-11-28 1:51 ` [PATCH] bisect: quote pathnames for eval safety Junio C Hamano 2005-11-28 2:12 ` Junio C Hamano 2005-11-29 6:42 ` [PATCH 0/4] Repository format version check series Martin Atukunda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).