{"thread":{"id":"5944","subject":"What's in git.git","startedAt":"2006-10-17T07:44:13Z","lastAt":"2006-10-17T18:57:42Z","messageCount":8,"participants":["Junio C Hamano","Linus Torvalds","Andy Whitcroft","Davide Libenzi","Ryan Anderson"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"28913","messageId":"7vvemjmlo2.fsf@assigned-by-dhcp.cox.net","threadId":"5944","inReplyTo":null,"subject":"What's in git.git","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-10-17T07:44:13Z","receivedAt":"2006-10-17T07:44:13Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"* The 'maint' branch has this fix and produced 1.4.2.4 release.\n\n   Linus Torvalds (1):\n      Fix hash function in xdiff library\n\n\n* The 'master' branch has these since the last announcement.\n  The fix in 'maint' is also included.  Hopefully we can cut the\n  real 1.4.3 with this sometime this week.\n\n   Junio C Hamano (1):\n      Revert \"move pack creation to version 3\"\n\n   Petr Baudis (1):\n      svnimport: Fix broken tags being generated\n\n   Rene Scharfe (2):\n      Make write_sha1_file_prepare() void\n      Replace open-coded version of hash_sha1_file()\n\n\n* The 'next' branch, in addition, has these.\n\n   Alan Chandler (1):\n      Gitweb - provide site headers and footers\n\n   Andy Whitcroft (2):\n      cvsimport: move over to using git-for-each-ref to read refs.\n      git-for-each-ref: improve the documentation on scripting modes\n\n   Christian Couder (12):\n      Add [-s|--hash] option to Linus' show-ref.\n      Use Linus' show ref in \"git-branch.sh\".\n      Document git-show-ref [-s|--hash] option.\n      Fix show-ref usage for --dereference.\n      Add pack-refs and show-ref test cases.\n      When creating branch c/d check that branch c does not already exists.\n      Uncomment test case: git branch c/d should barf if branch c exists.\n      Fix a remove_empty_dir_recursive problem.\n      Clean up \"git-branch.sh\" and add remove recursive dir test cases.\n      Use git-update-ref to delete a tag instead of rm()ing the ref file.\n      Check that a tag exists using show-ref instead of looking for the ref file.\n      Do not create tag leading directories since git update-ref does it.\n\n   Dennis Stosberg (2):\n      lock_ref_sha1_basic does not remove empty directories on BSD\n      Remove bashism from t3210-pack-refs.sh\n\n   Jeff King (3):\n      wt-status: use simplified resolve_ref to find current branch\n      gitignore: git-pack-refs is a generated file.\n      gitignore: git-show-ref is a generated file.\n\n   Johannes Schindelin (3):\n      Fix git-update-index --again\n      show-branch: mark active branch with a '*' again\n      Turn on recursive with --summary\n\n   Jonas Fonseca (1):\n      Add man page for git-show-ref\n\n   Junio C Hamano (55):\n      upload-pack: stop the other side when they have more roots than we do.\n      Add git-for-each-ref: helper for language bindings\n      Fix t1400-update-ref test minimally\n      fsck-objects: adjust to resolve_ref() clean-up.\n      symbolit-ref: fix resolve_ref conversion.\n      Add callback data to for_each_ref() family.\n      Tell between packed, unpacked and symbolic refs.\n      pack-refs: do not pack symbolic refs.\n      git-pack-refs --prune\n      pack-refs: fix git_path() usage.\n      lock_ref_sha1_basic: remove unused parameter \"plen\".\n      Clean-up lock-ref implementation\n      update-ref: -d flag and ref creation safety.\n      update a few Porcelain-ish for ref lock safety.\n      Teach receive-pack about ref-log\n      receive-pack: call setup_ident before git_config\n      grep --all-match\n      teach revision walker about --all-match.\n      git-diff/git-apply: make diff output a bit friendlier to GNU patch (part 1)\n      ref locking: allow 'foo' when 'foo/bar' used to exist but not anymore.\n      refs: minor restructuring of cached refs data.\n      lock_ref_sha1(): do not sometimes error() and sometimes die().\n      lock_ref_sha1(): check D/F conflict with packed ref when creating.\n      delete_ref(): delete packed ref\n      git-branch: remove D/F check done by hand.\n      show-ref --hash=len, --abbrev=len, and --abbrev\n      git-fetch: adjust to packed-refs.\n      Fix refs.c;:repack_without_ref() clean-up path\n      gitweb: make leftmost column of blame less cluttered.\n      git-fetch: do not look into $GIT_DIR/refs to see if a tag exists.\n      pack-refs: use lockfile as everybody else does.\n      gitweb: prepare for repositories with packed refs.\n      Revert 954a6183756a073723a7c9fd8d2feb13132876b0\n      pack-refs: call fflush before fsync.\n      blame.c: whitespace and formatting clean-up.\n      git-blame: --show-number (and -n)\n      git-blame: --show-name (and -f)\n      blame.c: move code to output metainfo into a separate function.\n      git-send-email: do not drop custom headers the user prepared\n      ref-log: allow ref@{count} syntax.\n      git-send-email: real name with period need to be dq-quoted on From: line\n      git-blame --porcelain\n      gitweb: use blame --porcelain\n      Make git-send-email detect mbox-style patches more readily\n      core.logallrefupdates create new log file only for branch heads.\n      git-pack-refs --all\n      core.logallrefupdates thinko-fix\n      pack-objects: document --delta-base-offset option\n      blame: Document and add help text for -f, -n, and -p\n      gitweb: spell \"blame --porcelain\" with -p\n      git-repack: repo.usedeltabaseoffset\n      diff --numstat\n      pack-objects: use of version 3 delta is now optional.\n      gitweb: use for-each-ref to show the latest activity across branches\n      Revert \"pack-objects: use of version 3 delta is now optional.\"\n\n   Linus Torvalds (6):\n      Add \"git show-ref\" builtin command\n      Teach \"git checkout\" to use git-show-ref\n      Start handling references internally as a sorted in-memory list\n      Add support for negative refs\n      Make ref resolution saner\n      Enable the packed refs file format\n\n   Luben Tuikov (4):\n      gitweb: blame: print commit-8 on the leading row of a commit-block\n      gitweb: blame: Mouse-over commit-8 shows author and date\n      gitweb: blame porcelain: lineno and orig lineno swapped\n      git-revert with conflicts to behave as git-merge with conflicts\n\n   Martin Waitz (2):\n      gitweb: start to generate PATH_INFO URLs.\n      gitweb: warn if feature cannot be overridden.\n\n   Matthew Wilcox (1):\n      Add --dry-run option to git-send-email\n\n   Nicolas Pitre (8):\n      introduce delta objects with offset to base\n      teach git-unpack-objects about deltas with offset to base\n      teach git-index-pack about deltas with offset to base\n      make git-pack-objects able to create deltas with offset to base\n      make pack data reuse compatible with both delta types\n      let the GIT native protocol use offsets to delta base when possible\n      zap a debug remnant\n      allow delta data reuse even if base object is a preferred base\n\n   Petr Baudis (5):\n      Fix broken sha1 locking\n      Fix buggy ref recording\n      gitweb: Document features better\n      gitweb: Fix search form when PATH_INFO is enabled\n      bisect reset: Leave the tree in usable state if git-checkout failed\n\n   Rene Scharfe (2):\n      git-archive --format=zip: use default version ID\n      git-archive --format=zip: add symlink support\n\n   Robert Shearman (2):\n      git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.\n      git-rebase: Add a -v option to show a diffstat of the changes upstream at the start of a rebase.\n\n   Ryan Anderson (1):\n      Remove git-annotate.perl and create a builtin-alias for git-blame\n\n   Santi Béjar (2):\n      fetch: Misc output cleanup\n      merge and resolve: Output short hashes and .. in \"Updating ...\"\n\n   Sasha Khapyorsky (1):\n      git-svnimport.perl: copying directory from original SVN place\n\n\n* The 'pu' branch, in addition, has these.\n\n   Junio C Hamano (17):\n      git-diff/git-apply: make diff output a bit friendlier to GNU patch (part 2)\n      para-walk: walk n trees, index and working tree in parallel\n      para walk wip\n      merge: loosen overcautious \"working file will be lost\" check.\n      git-pickaxe: blame rewritten.\n      git-pickaxe: minimally use revision machinery.\n      git-pickaxe: fix output for more than one paths from the same commit.\n      git-pickaxe: fix \"bottom\" commit handling.\n      git-pickaxe: allow using non -u0 diff internally.\n      git-pickaxe: use linked list of blame entries.\n      git-pickaxe: collapse trivial blame entry.\n      git-pickaxe: blame line movements within a file.\n      git-pickaxe: blame cut-and-pasted lines.\n      git-pickaxe: -M, -C, and -C -C\n      git-pickaxe: optimize nth_line()\n      git-pickaxe: make -C (copy from other file) take immediate blame.\n      git-pickaxe: document -M, -C, and -C -C\n\n   Petr Baudis (1):\n      gitweb: Show project README if available\n"},{"id":"28979","messageId":"Pine.LNX.4.64.0610171005370.3962@g5.osdl.org","threadId":"5944","inReplyTo":"7vvemjmlo2.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-10-17T17:16:21Z","receivedAt":"2006-10-17T17:16:21Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Tue, 17 Oct 2006, Junio C Hamano wrote:\n>\n> * The 'maint' branch has this fix and produced 1.4.2.4 release.\n> \n>    Linus Torvalds (1):\n>       Fix hash function in xdiff library\n\nThere's two things to note about this:\n\n - the libxdiff dependencies are broken, so it's likely that you need to \n   do a \"make clean; make\" to actually see the result of this.\n\n   We really should fix this. I was bitten by this _again_ when I wanted \n   to do some performance testing, and was scratching my head about why it \n   didn't seem to matter.\n\n   I haven't looked into which part of the Makefile is broken yet, so I \n   really don't know what's broken, but maybe somebody who likes makefiles \n   could take a look? Basically, doing a\n\n\ttouch xdiff/xmacros.h\n\n   should cause a recompile of a lot more than it causes.\n\n - while the hash function problem _can_ cause really huge slowdowns in \n   some unlucky situations, it actually causes noticeable performance \n   issues even for normal situations.\n\n   For example, for me on a 2GHz merom machine in the current git \n   directory:\n\n   Before:\n\n\t[torvalds@merom git]$ time ./git log -p | wc -l\n\t746211\n\t\n\treal    0m27.223s\n\tuser    0m26.894s\n\tsys     0m0.424s\n\n   After:\n\n\t[torvalds@merom git]$ time ./git log -p | wc -l\n\t746211\n\t\n\treal    0m9.638s\n\tuser    0m9.329s\n\tsys     0m0.468s\n\n   so there's a factor-of-three difference here even on a \"normal\" load \n   like git itself. You don't need a huge file with tons of changes to see \n   the effect of this.\n\nSo we should fix the makefile to add whatever proper header file \ndependencies, but we should also make sure that whoever builds binaries \nhas done a \"make clean\", otherwise the fix is potentially hidden.\n\n\t\tLinus\n"},{"id":"28980","messageId":"2ffb978570666d608b8a58c39e30b9d1@pinky","threadId":"5944","inReplyTo":"Pine.LNX.4.64.0610171005370.3962@g5.osdl.org","subject":"[PATCH] add proper dependancies on the xdiff source","fromName":"Andy Whitcroft","fromEmail":"apw@shadowen.org","sentAt":"2006-10-17T18:08:08Z","receivedAt":"2006-10-17T18:08:08Z","isPatch":true,"sender":{"key":"apw@shadowen.org","avatar":"https://gravatar.com/avatar/d3088262854661a913ef35cc40fedcc270142d4461791142bc1ea0b2a4e2e147?d=mp&s=160"},"body":"We are not rebuilding the xdiff library when its header files change.\nAdd dependancies for those to the main Makefile.\n\nSigned-off-by: Andy Whitcroft <apw@shadowen.org>\n---\ndiff --git a/Makefile b/Makefile\nindex 932bcb9..3e54f75 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -768,6 +768,8 @@ git-http-push$X: revision.o http.o http-\n \trm -f $@ && $(AR) rcs $@ $(LIB_OBJS)\n \n XDIFF_OBJS=xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o\n+$(XDIFF_OBJS): xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\n+\txdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h\n \n $(XDIFF_LIB): $(XDIFF_OBJS)\n \trm -f $@ && $(AR) rcs $@ $(XDIFF_OBJS)\n"},{"id":"28983","messageId":"Pine.LNX.4.64.0610171113450.8404@alien.or.mcafeemobile.com","threadId":"5944","inReplyTo":"Pine.LNX.4.64.0610171005370.3962@g5.osdl.org","subject":"Re: What's in git.git","fromName":"Davide Libenzi","fromEmail":"davidel@xmailserver.org","sentAt":"2006-10-17T18:15:44Z","receivedAt":"2006-10-17T18:15:44Z","isPatch":false,"sender":{"key":"davidel@xmailserver.org","avatar":null},"body":"On Tue, 17 Oct 2006, Linus Torvalds wrote:\n\n>  - while the hash function problem _can_ cause really huge slowdowns in \n>    some unlucky situations, it actually causes noticeable performance \n>    issues even for normal situations.\n\nYes, using a 32 bits multiplier on a 64 bits machine transform the almost \nO(1) hash performance to a crappy O(N) list performance. you notice that \nin every diff operation, independently from the content.\n\n\n\n- Davide\n"},{"id":"28982","messageId":"7v64eikdp2.fsf@assigned-by-dhcp.cox.net","threadId":"5944","inReplyTo":"Pine.LNX.4.64.0610171005370.3962@g5.osdl.org","subject":"Re: What's in git.git","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-10-17T18:19:21Z","receivedAt":"2006-10-17T18:19:21Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Linus Torvalds <torvalds@osdl.org> writes:\n\n> There's two things to note about this:\n>\n>  - the libxdiff dependencies are broken, so it's likely that you need to \n>    do a \"make clean; make\" to actually see the result of this.\n\nEh, stupid-and-obvious like this perhaps.\n\n---\n\ndiff --git a/Makefile b/Makefile\nindex 2c7c338..3fed480 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -237,6 +237,7 @@ PYMODULES = \\\n \n LIB_FILE=libgit.a\n XDIFF_LIB=xdiff/lib.a\n+$(XDIFF_LIB): $(wildcard xdiff/*.[ch])\n \n LIB_H = \\\n \tarchive.h blob.h cache.h commit.h csum-file.h delta.h grep.h \\\n"},{"id":"28984","messageId":"87dcb0bd0610171122o29be7d66r31ef60ef714ca536@mail.gmail.com","threadId":"5944","inReplyTo":"2ffb978570666d608b8a58c39e30b9d1@pinky","subject":"Re: [PATCH] add proper dependancies on the xdiff source","fromName":"Ryan Anderson","fromEmail":"rda@google.com","sentAt":"2006-10-17T18:22:41Z","receivedAt":"2006-10-17T18:22:41Z","isPatch":true,"sender":{"key":"ryan@michonline.com","avatar":null},"body":"On 10/17/06, Andy Whitcroft <apw@shadowen.org> wrote:\n> We are not rebuilding the xdiff library when its header files change.\n> Add dependancies for those to the main Makefile.\n>\n> Signed-off-by: Andy Whitcroft <apw@shadowen.org>\n\nAcked-by: Ryan Anderson <ryan@google.com>\n\n(I had a different variation on the same change just about ready to\nmail, but the dependencies match.  For a simple verification, \"gcc -MM\nxdiff.c\" is a good tool.)\n"},{"id":"28987","messageId":"Pine.LNX.4.64.0610171141510.3962@g5.osdl.org","threadId":"5944","inReplyTo":"7v64eikdp2.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2006-10-17T18:53:19Z","receivedAt":"2006-10-17T18:53:19Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Tue, 17 Oct 2006, Junio C Hamano wrote:\n> \n> Eh, stupid-and-obvious like this perhaps.\n\nI'm not convinced that is enough. You need to make the individual \nxdiff/*.c files depend on the xdiff/*.h files, because otherwise it will \nthink that the *.o files are up-to-date and just re-link the archive.\n\nThe kernel does automatic dependency generation for all the *.c files, and \nit's _really_ nice. Having to do dependencies by hand is just always going \nto suck. But the kernel can depend on more things (in particular, the \nkernel can depend on gcc, and use things like \"-MD,$(depfile)\" to generate \nlists of dependencies while building, so that any object file _always_ has \nthe things it depended upn explicitly listed).\n\nBut in the absense of those kinds of really clever and powerful tricks, it \nmight be worthwhile to even just have a \"mkdepend\" scrupt thing and \ninclude the end result into the Makefile (we do already depend on GNU \nmake).\n\nThat would allow us to get the real dependencies (and minimal! right now \nwe sometimes compile too _much_ just because some of our dependencies are \nso screwed up and lazy).\n\n\t\t\tLinus\n"},{"id":"28988","messageId":"453527A6.1000201@shadowen.org","threadId":"5944","inReplyTo":"7v64eikdp2.fsf@assigned-by-dhcp.cox.net","subject":"Re: What's in git.git","fromName":"Andy Whitcroft","fromEmail":"apw@shadowen.org","sentAt":"2006-10-17T18:57:42Z","receivedAt":"2006-10-17T18:57:42Z","isPatch":false,"sender":{"key":"apw@shadowen.org","avatar":"https://gravatar.com/avatar/d3088262854661a913ef35cc40fedcc270142d4461791142bc1ea0b2a4e2e147?d=mp&s=160"},"body":"Junio C Hamano wrote:\n> Linus Torvalds <torvalds@osdl.org> writes:\n> \n>> There's two things to note about this:\n>>\n>>  - the libxdiff dependencies are broken, so it's likely that you need to \n>>    do a \"make clean; make\" to actually see the result of this.\n> \n> Eh, stupid-and-obvious like this perhaps.\n> \n> ---\n> \n> diff --git a/Makefile b/Makefile\n> index 2c7c338..3fed480 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -237,6 +237,7 @@ PYMODULES = \\\n>  \n>  LIB_FILE=libgit.a\n>  XDIFF_LIB=xdiff/lib.a\n> +$(XDIFF_LIB): $(wildcard xdiff/*.[ch])\n\nTo combine your more succinct style with my previous patch, its the link\nbetween the .o's and the .h's thats missing.\n\n$(XDIFF_OBJS): $(wildcard xdiff/*.h)\n\n-apw\n"}]}