mirror of
https://github.com/git/git.git
synced 2026-03-08 00:07:41 +01:00
262 lines
9.0 KiB
Plaintext
262 lines
9.0 KiB
Plaintext
What to expect after 0.99.6
|
||
===========================
|
||
|
||
This is written in a form of to-do list for me, so if I say
|
||
"accept patch", it means I do not currently plan to do that
|
||
myself. People interested in seeing it materialize please take
|
||
a hint. The latest copy of this document is found at
|
||
|
||
http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
|
||
|
||
Tool Renames Plan
|
||
-----------------
|
||
|
||
- All non-binary commands will lose -script suffix in
|
||
$(bindir). The source to git-foo will be either git-foo.sh
|
||
or git-foo.perl in the source tree, and the documentation
|
||
will be in Documentation/git-foo.txt.
|
||
|
||
- The commands whose names have 'cache' to mean 'index file'
|
||
will get 'cache' in their names replaced with 'index'. For
|
||
git-fsck-cache and git-convert-cache, 'cache' will be
|
||
replaced with 'objects'.
|
||
|
||
- The commit walkers will have 'pull' in their names replaced
|
||
with 'fetch'. 'git-ssh-push' will become 'git-ssh-upload'.
|
||
|
||
- We continue to follow the convention to name the C source
|
||
file that contains the main program of 'git-foo' command
|
||
'foo.c'. That means we will have 'fsck-objects.c', for
|
||
example.
|
||
|
||
- At this moment, I am not planning to rename the symbols used
|
||
in programs, nor any library sources. "cache.h" will stay
|
||
"cache.h", so does "read-cache.c". "struct cache_entry" and
|
||
"ce_match_stat()" will keep their names. We _might_ want to
|
||
rename them in later rounds but not right now.
|
||
|
||
- In 0.99.7, all renamed commands will have symbolic links in
|
||
$(bindir) so that old names continue to work. These backward
|
||
compatible symlinks will not be present in documentation,
|
||
though. Especially, the main documentation, git(7) will talk
|
||
about the new names. Old environment names defined in
|
||
gitenv() will also be removed in this release.
|
||
|
||
Tentatively we aim to do this on Sep 17th.
|
||
|
||
- In 0.99.8, we do not install these backward compatible
|
||
symbolic links in $(bindir) anymore. The Makefile will have
|
||
a target to remove old symlinks from $(DESTDIR)$(bindir) you
|
||
can run manually to help you clean things up.
|
||
|
||
The timeframe for this is around Oct 1st, but I could be
|
||
talked into delaying the symlink removal if Porcelain people
|
||
find this schedule too tight.
|
||
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
* Accept patches from people who actually have done CVS
|
||
migration and update the cvs-migration documentation.
|
||
Link the documentation from the main git.txt page.
|
||
|
||
* Accept patches from people who were hit by shiny blue bat to
|
||
update the SubmittingPatches.
|
||
|
||
* Talk about using rsync just once at the beginning when
|
||
initializing a remote repository so that local packs do not
|
||
need to be expanded. I personally do not think we need tool
|
||
support for this (but see below about optimized cloning).
|
||
|
||
* Maybe update tutorial with a toy project that involves two or
|
||
three developers..
|
||
|
||
* Update tutorial to cover setting up repository hooks to do
|
||
common tasks.
|
||
|
||
* Accept patches to finish missing docs.
|
||
|
||
|
||
Technical (heavier)
|
||
-------------------
|
||
|
||
* Tony Luck reported an unfortunate glitch in the 3-way merge.
|
||
Encourage discussions to come up with a not-so-expensive way
|
||
to catch the kind of ambiguities that led to his misery.
|
||
[Deathmatch between Daniel's and Fredrik's ongoing.]
|
||
|
||
* HPA has two projects, klibc and klibc-kbuild, that have large
|
||
set of overlapping files in different paths (i.e. one has many
|
||
renames from the other). There currently is no way for git to
|
||
help keep these two trees in sync, merging criss-cross between
|
||
them. The merge logic should be able to take advantage of
|
||
rename/copy detection smarts git-diff-* family has. Linus,
|
||
me, and Daniel outlined a smarter merge strategy for this.
|
||
Try them out.
|
||
|
||
* To make it easier to experiment with different merge
|
||
strategies, make git-merge driver that will run merge backends
|
||
for the best merge [DONE].
|
||
|
||
* Sort out the mess objects/info/alternates introduces on the
|
||
client end. Both rsync and commit walkers are broken.
|
||
* describe current situation [DONE]
|
||
* http [Daniel started]
|
||
* rsync
|
||
|
||
* We might want to optimize cloning with GIT native transport
|
||
not to explode the pack, and store it in objects/pack instead.
|
||
We would need a tool to generate an idx file out of a pack
|
||
file for this. Also this itself may turn out to be a bad
|
||
idea, making the set of packs in repositories everybody has
|
||
different from each other.
|
||
|
||
* Maybe a pack optimizer.
|
||
|
||
* Maybe an Emacs VC backend.
|
||
|
||
|
||
Technical (milder)
|
||
------------------
|
||
|
||
* Define semantics for relative pathnames in objects/info/alternates.
|
||
Either relative to 'objects', or relative to the top of project tree
|
||
;the latter is consistent with GIT_ALTERNATE_OBJECT_DIRECTORIES.
|
||
Perhaps would end up doing the former because we would want to be
|
||
consistent between a naked repository and a repository with working
|
||
tree [DONE].
|
||
|
||
* Tool renames. Give fixup patch for at least Cogito and StGIT
|
||
[DONE].
|
||
|
||
* Massage ssh-fetch and ssh-upload to be more backward
|
||
compatible.
|
||
|
||
* Have Daniel's read-tree graduate from "pu" after plugging
|
||
leaks [DONE].
|
||
|
||
* Implement a merge backend using Daniel's read-tree [DONE].
|
||
|
||
* Rename 'git-merge-resolve' to 'git-merge-stupid' and
|
||
'git-merge-multibase' to 'git-merge-resolve'; the former is
|
||
for historical curiosity and comparison purposes only and not
|
||
to be used in real applications so remove it from the default
|
||
strategies list [DONE].
|
||
|
||
* Accept Fredrik merge after renaming it (I want to name the
|
||
driver 'git merge'). Suggest where to place *.py stuff --
|
||
probably in $(share)/git-core/ and add Makefile entry for
|
||
installation [DONE].
|
||
|
||
* Encourage concrete proposals to commit log message templates
|
||
we discussed some time ago.
|
||
|
||
* Bug Martin for archimport script documentation [DONE].
|
||
|
||
* More portability [IN PROGRESS].
|
||
|
||
* Accept patches to cause "read-tree -u" delete a directory when
|
||
it makes it empty.
|
||
|
||
* Perhaps accept patches to introduce the concept of "patch flow
|
||
expressed as ref mappings" Josef has been advocating about.
|
||
|
||
* Perhaps accept patches to do undo/redo.
|
||
|
||
* Perhaps accept patch to optionally allow '--fuzz' in
|
||
'git-apply'.
|
||
|
||
* Maybe grok PGP signed text/plain in applymbox as well.
|
||
|
||
* Perhaps a tool to revert a single file to pre-modification
|
||
state? git-cat-file blob `git-ls-files | grep foo` >foo or
|
||
git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
|
||
the command be called? git-revert is taken so is
|
||
git-checkout.
|
||
|
||
* A tool to detect, show and prune already merged topic
|
||
branches [DONE; 'branch -d' to prune; users can do gitk for
|
||
deciding].
|
||
|
||
* "Lost and Found"; link dangling commits found by fsck-objects
|
||
under $GIT_DIR/refs/lost-found/. Then show-branch or gitk can
|
||
be used to find any lost commit.
|
||
|
||
Do not name it /lost+found/; that would probably confuse
|
||
things that mistake it a mount point (not our code but
|
||
somebody else's).
|
||
|
||
* Enhance "git repack" to not always use --all; this would be
|
||
handy if the repository contains wagging heads like "pu" in
|
||
git.git repository.
|
||
|
||
* Internally split the project into non-doc and doc parts; add
|
||
an extra root for the doc part and merge from it; move the
|
||
internal doc source to a separate repository, like the +Meta
|
||
repository; experiment if this results in a reasonable
|
||
workflow, and document it in howto form if it does.
|
||
|
||
* Option to limit rename detection for more than N paths.
|
||
|
||
* diffcore-rename leak reintroduced because the 'fix' was
|
||
broken [DONE].
|
||
|
||
* Marking copy seems to be broken when A,B => B,C rename
|
||
happens; we incorrectly say B stays, which makes the new B
|
||
copy of old A, not rename [DONE].
|
||
|
||
* Make rebase restartable; instead of skipping what cannot be
|
||
automatically forward ported, leave the conflicts in the work
|
||
tree, have the user resolve it, and then restart from where it
|
||
left off.
|
||
|
||
* 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].
|
||
|
||
* Allow 'git apply' to accept GNU diff 2.7 output that forgets
|
||
to say '\No newline' if both input ends with incomplete
|
||
lines.
|
||
|
||
|
||
Technical (trivial)
|
||
-------------------
|
||
|
||
* Add simple globbing rules for git-show-branch so that I can
|
||
say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
|
||
ko-rc are in refs/tags/).
|
||
|
||
* Deal with CDPATH [DONE].
|
||
|
||
* Teach 'git format-patch' about 'git cherry' [DONE].
|
||
|
||
* Make 'git bisect' easier to use by logging the earlier
|
||
good/bad choices and make it replayable [DONE].
|
||
|
||
* Perhaps "git branch -d" to delete a branch. We probably need
|
||
some way to say "delete this branch because everything in this
|
||
should be merged in the master branch" and refuse the removal
|
||
if it is not true [DONE].
|
||
|
||
* We would want test scripts for the relative directory path
|
||
stuff Linus has been working on. So far, the following
|
||
commands should be usable with relative directory paths:
|
||
|
||
git-update-index
|
||
git-ls-files
|
||
git-diff-files
|
||
git-diff-index
|
||
git-diff-tree
|
||
git-rev-list
|
||
git-rev-parse
|
||
|
||
* In a freashly created empty repository, `git fetch foo:bar`
|
||
works OK, but `git checkout bar` afterwards does not (missing
|
||
`.git/HEAD`).
|
||
|
||
|
||
Local Variables:
|
||
mode: text
|
||
End:
|