* plumbing pull request
@ 2005-05-04 9:22 Junio C Hamano
0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2005-05-04 9:22 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
Linus, please pull from http://members.cox.net/junkio/git-jc.git/
which contains the following changes.
----------------------------------------------------------------
Optimize diff-cache -p --cached
This patch optimizes "diff-cache -p --cached" by avoiding to
inflate blobs into temporary files when the blob recorded in the
cache matches the corresponding file in the work tree. The file
in the work tree is passed as the comparison source in such a
case instead.
This optimization kicks in only when we have already read the
cache this optimization and this is deliberate. Especially,
diff-tree does not use this code, because changes are contained
in small number of files relative to the project size most of
the time, and reading cache is so expensive for a large project
that the cost of reading it outweighs the savings by not
inflating blobs.
Also this patch cleans up the structure passed from diff clients
by removing one unused structure member.
----------------------------------------------------------------
Terminate diff-* on non-zero exit from GIT_EXTERNAL_DIFF
(slightly updated from the version posted to the GIT mailing list
with small bugfixes).
This patch changes the git-apply-patch-script to exit non-zero when
the patch cannot be applied. Previously, the external diff driver
deliberately ignored the exit status of GIT_EXTERNAL_DIFF command,
which was a design mistake. It now stops the processing when
GIT_EXTERNAL_DIFF exits non-zero, so the damages from running
git-diff-* with git-apply-patch-script between two wrong trees can be
contained.
The "diff" command line generated by the built-in driver is changed to
always exit 0 in order to match this new behaviour. I know Pasky does
not use GIT_EXTERNAL_DIFF yet, so this change should not break Cogito,
either.
----------------------------------------------------------------
Git-prune-script loses blobs referenced from an uncommitted cache.
(updated from the version posted to GIT mailing list).
When a new blob is registered with update-cache, and before the cache
is written as a tree and committed, git-fsck-cache will find the blob
unreachable. This patch adds a new flag, "--cache" to git-fsck-cache,
with which it keeps such blobs from considered "unreachable".
The git-prune-script is updated to use this new flag. At the same time
it adds .git/refs/*/* to the set of default locations to look for heads,
which should be consistent with expectations from Cogito users.
Without this fix, "diff-cache -p --cached" after git-prune-script has
pruned the blob object will fail mysteriously and git-write-tree would
also fail.
----------------------------------------------------------------
Short-cut error return path in git-local-pull.
When git-local-pull with -l option gets ENOENT attempting to create
a hard link, there is no point falling back to other copy methods.
With this patch, git-local-pull detects such a case and gives up
copying the file early.
----------------------------------------------------------------
Make git-*-pull say who wants them for missing objects.
This patch updates pull.c, the engine that decides which objects are
needed, given a commit to traverse from, to report which commit was
calling for the object that cannot be retrieved from the remote side.
This complements git-fsck-cache in that it checks the consistency of
the remote repository for reachability.
----------------------------------------------------------------
^ permalink raw reply [flat|nested] 2+ messages in thread
* Plumbing pull request
@ 2005-05-05 6:07 Junio C Hamano
0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2005-05-05 6:07 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
Linus, please pull from
http://members.cox.net/junkio/git-jc.git
which will update the following files:
diff-cache.c | 23 ++++++-
diff.c | 58 ++++++++++++++------
git-apply-patch-script | 141 +++++++++++++++++++++++++++++++++++--------------
update-cache.c | 42 +++++++++++++-
4 files changed, 202 insertions(+), 62 deletions(-)
via the following commits:
----------------------------------------------------------------
Prepare git-apply-patch-script for symbolic links.
This patch prepares the git-apply-patch-script for the upcoming change
to store the symbolic links in the cache, being worked on by Kay
Sievers.
It currently is very anal about symbolic link changes. It refuses to
change between a regular file and a symbolic link, and only allows
symbolic link changes if the patch is based on the same original.
----------------------------------------------------------------
Prepare diff side for upcoming symlink work.
This patch prepares the external diff interface engine for the
change to store the symbolic links in the cache, being worked on
by Kay Sievers.
The main thing it does is when comparing with the work tree, it
prepares the counterpart to the blob being compared by doing a
readlink followed by sending that result to a temporary file to
be diffed.
----------------------------------------------------------------
diff-cache shows differences for unmerged paths without --cache.
While manually resolving a merge conflict, being able to run
diff-cache without --cache option between files in the work tree
and either of the ancestor trees is helpful to verify the hand
merge result. However, diff-cache refuses to handle unmerged
paths, even when run without --cache option.
This changes the behaviour so that the above use case will
report the differences between the compared tree and the magic
0{40} SHA1 (i.e. "look at the work tree"). When there is no
corresponding file in the work tree, or when the command is run
with "--cache" option, it continues to report "unmerged".
----------------------------------------------------------------
Do not write out new index if nothing has changed.
The git-update-cache command, especially with --refresh, may not change
anything. In such a case, writing 1.6MB of the same thing is a waste.
----------------------------------------------------------------
Make git-prune-script executable again.
I do not know why the executable bit was lost since the change went in as
GIT pull, not via e-mail patch, but here is a fix.
----------------------------------------------------------------
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-05-05 6:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-04 9:22 plumbing pull request Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2005-05-05 6:07 Plumbing " Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox