snapshot 2006-04-14

todo
Junio C Hamano 2006-04-14 13:54:38 -07:00
parent c1a4066f67
commit f8ab671134
4 changed files with 57 additions and 78 deletions

2
Doit
View File

@ -8,7 +8,7 @@ test -z "$(git diff --cached --name-status)" || {
}
Meta/Make clean >/dev/null 2>&1

branches='next master maint'
: ${branches='next master pu'}

nstall=install
for branch in $branches

42
RB Executable file
View File

@ -0,0 +1,42 @@
#!/bin/sh

master_sha1=`git rev-parse --verify refs/heads/master`
LF='
'
(cd .git/refs/heads && find -type f) |
sed -n \
-e 's/^\.\///' \
-e '/^[^\/][^\/]\//p' |
while read topic
do
rebase= done= not_done= trouble= date=
topic_sha1=`git rev-parse --verify "refs/heads/$topic"`

date=`
git-rev-list -1 --pretty "$topic" |
sed -ne 's/^Date: *\(.*\)/ (\1)/p'
`
only_next_1=`git-rev-list ^master "^$topic" next | sort`
only_next_2=`git-rev-list ^master next | sort`
rebase=
if test "$only_next_1" = "$only_next_2"
then
not_in_topic=`git-rev-list "^$topic" master`
if test -z "$not_in_topic"
then
:; # already up-to-date.
else
rebase=" (can be rebased)"
fi
fi
if test -n "$rebase"
then
echo "Rebasing $topic to pick up:"
git-rev-list --pretty=oneline "^$topic" master |
sed -e 's/^[0-9a-f]* / * /'
git checkout "$topic" &&
git rebase master || break;
fi
done


78
TODO
View File

@ -17,45 +17,23 @@ if ever -- only if somebody cares enough and submits a clean
patch, perhaps ;-).


Documentation
-------------

* No pending issues at the moment. "Revamp Tutorial" initiative
by Bruce Fields ongoing and things are looking better.


UI
--

* Make "git branch -d foo" while on foo branch suggest "maybe
you want to go back to 'master'?"

* Error message from "git checkout -b bar v2.6.10" should assume
v2.6.10 is an attempt to switch to a new branch based on
mistyped tag, not an attempt to revert path v2.6.10 from the
HEAD commit with extra "make and switch to this branch"
argument.

* "git commit [-i|-o] paths..." with misspelled paths would be
silently ignored. Add a flag to ls-files to catch unmatched
pathspec to prevent this.


Design issues
-------------

* Rehash "git commit" with various parameters to be more
intuitive without breaking traditinal users too much. We need
to phase this in, especially if we are going to change "git
commit" to imply the current "git commit -a" behaviour.

* "intent to add" index entries.
* "intent to add" index entries?

* Plug-in file-level merges. On the other hand, we may not even
need this; just tell people to run "xxdiff -U" on the working
tree files.

* Doing a merge in a separate directory.
* Doing a merge in a separate directory?

* Make 'format-patch' take revision limiters similar to
rev-list. For example:
@ -101,17 +79,14 @@ Technical (heavier)

This needs a matching smart on the dumb protocol downloader.

* Maybe an Emacs VC backend.

* Look at libified GNU diff CVS seems to use, or libxdiff.
[Daniel has his own diff tool almost ready to start
integrating and testing]


Technical (milder)
------------------

* "git status -v" to give commit preview.
* Shallow clones.

* Encourage competition between annotate vs blame. Maybe come
up with some nontrivial test cases.

* Subprojects. I think the "bind commit" approach has been
outlined at sufficiently detailed level. Maybe find time to
@ -119,34 +94,6 @@ Technical (milder)

<7vacdzkww3.fsf@assigned-by-dhcp.cox.net>

* Shallow clones.

* Mark entries as "assume unchanged" in the index.

<Pine.LNX.4.64.0601311807470.7301@g5.osdl.org>

A config item '[core] trust_stat = false' would cause to:

- "update-index" with or without --add would mark the path
valid after registering. Should we make the working tree
file read-only at this point?

- checkout-index -u would mark the path and makes the working
tree file read-only.

- read-tree without -u would mark the path invalid.

- update-index --refresh should *not* mark up-to-date paths valid.

Impacts to various commands:

- update-index --refresh would ignore them.

- diff-files would say unchanged.

- diff-index without --cached acts the same way as diff-index
--cached.

* Decide what to do about rebase applied to merged head. One
extreme is to allow rebase if "rev-list ours..theirs" gives
anything. This loosens the current merge-base based approach.
@ -164,8 +111,6 @@ Technical (milder)

<20060114021800.4688.qmail@web31803.mail.mud.yahoo.com>

* Perhaps a smarter HTTP anonymous download via CGI.

* diff stopping at the first output; qgit wants to know if this
tree has any A or D from the other tree and nothing else.
Would help internal tree-diff in rev-list as well.
@ -179,22 +124,11 @@ Technical (milder)
* Perhaps detect cloning request in upload-pack and cache the
result for next cloning request until any of our refs change.

* Perhaps accept patch to optionally allow '--fuzz' in
'git-apply'. am/applymbox is _not_ the place to do it.

* Allow 'git apply' to accept GNU diff 2.7 output that forgets
to say '\No newline' if both input ends with incomplete
lines.

* Perhaps deal with "Files differ" (binary diff) in non C
locales.

* Maybe grok PGP signed text/plain in applymbox as well.

* Output full path in the "git-rev-list --objects" output, not
just the basename, and see the improved clustering results in
better packing [Tried, but did not work out well].


Technical (trivial)
-------------------

13
WI
View File

@ -1,11 +1,14 @@
#!/bin/sh
# Prepare "What's in git.git"

master_at=$(git rev-parse --verify refs/heads/master)

echo "To: git@vger.kernel.org"
echo "Subject: What's in git.git"
echo "X-master-at: $master_at"

tagged=`git rev-parse --not --verify tags/sa/master`
list=`git-rev-list $tagged heads/master 2>/dev/null`
list=`git-rev-list $tagged refs/heads/master 2>/dev/null`
if test -n "$list"
then
echo
@ -14,22 +17,22 @@ then
git log $tagged heads/master | git shortlog
fi

list=`git-rev-list heads/master..heads/next 2>/dev/null`
list=`git-rev-list refs/heads/master..refs/heads/next 2>/dev/null`
if test -n "$list"
then
echo
echo
echo "* The 'next' branch, in addition, has these."
echo
git log --no-merges heads/master..heads/next | git shortlog
git log --no-merges refs/heads/master..refs/heads/next | git shortlog
fi

list=`git-rev-list ^heads/master ^heads/next heads/pu 2>/dev/null`
list=`git-rev-list ^refs/heads/master ^refs/heads/next refs/heads/pu 2>/dev/null`
if test -n "$list"
then
echo
echo
echo "* The 'pu' branch, in addition, has these."
echo
git log --no-merges ^heads/master ^heads/next heads/pu | git shortlog
git log --no-merges ^refs/heads/master ^refs/heads/next refs/heads/pu | git shortlog
fi