Anonymous (owner)

Forks

Revisions

  • 537581 Wed Oct 29 16:56:28 -0700 2008
  • 5a89c2 Wed Oct 29 13:26:10 -0700 2008
gist: 20818 Download_button fork
public
Public Clone URL: git://gist.github.com/20818.git
Embed All Files: show embed
cli-revamp.txt #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
GIT command line revamp
=======================
 
This design document is designed for review and critique over planned
direction for changing the command set used by git, rather than
reviewing and critiquing individual changes.
 
In general, old commands will be grandfathered for a year or longer,
and all plumbing commands will still work as originally designed.
 
Please bear in mind when critiquing that each of these changes might
themselves have a progressive implementation, for instance the new
behaviour being optional initially.
 
Please try to be positive with your comments; let's try to come up
with solutions and not argue about the details of the solutions
presented until those details are submitted. In particular, critical
comments that do not acknowledge the presence of a problem are
worthless at this stage.
 
Add/rm/reset/checkout/revert
----------------------------
 
Many find these confusing.
 
  * 'git stage' would do what 'git add' does now.
 
  * 'git unstage' would do what 'git reset --' does now
 
  * 'git status' would encourage the user to use
    'git diff --staged' to see staged changes as a patch
 
  * 'git commit' with no changes should give useful information about
    using 'git stage', 'git commit -a' or 'git commit filename ...'
 
  * 'git add' and 'git rm': no change
 
  * 'git update-index' considered plumbing, not changed
 
  * 'git revert' deprecated in favour of 'git cherry-pick --revert'
 
  * 'git undo' would do what 'git checkout HEAD --' does now
 
  * 'git checkout branch' would, if there is a remote branch called
    'branch' on exactly one remote, do what
    'git checkout -b branch thatremote/branch' does now. If it is
    ambiguous, it would be an error, forcing the explicit notation.
 
  * 'git branch --switch' : alternative to checkout
 
 
Push/pull
---------
 
These commands are asymmetric, and this seems mostly historical.
 
  * 'git push --matching' does what 'git push' does today (without
    explicit configuration)
 
  * 'git push' does what
    'git push origin $(git symbolic-ref HEAD | sed "s!refs/heads/!!")'
    does today. ie, it only pushes the current branch.
 
  * 'git pull' behaviour unchanged
 
  * 'git push' to checked out branch of non-bare repository not
    allowed without special configuration. Configuration available
    that allows working directory to be updated, known caveats
    notwithstanding. Ideally, it would refuse only in situations
    where a broken working copy would be left (because you couldn't
    fix it), and work when it can be known to be safe.
 
 
Informational
-------------
 
  * 'git branch' should default to '--color=auto -v'
 
  * 'git tag -l' should show more information
 
 
Working with patches
--------------------
 
  * 'git send-email' should prompt for all SMTP-related information
    about sending e-mail when it is running with no configuration.
    Because these days /usr/lib/sendmail is rarely configured
    correctly.
 
  * other git send-email functionality which has bitten people -
    particularly building the recipient list - should prompt for
    confirmation until configured to be automatic.
 
  * 'git am -3' the default; with global option to make it not the
    default for those that prefer the speed of -2
 
 
Submodules
----------
 
  * submodules should be able to refer to symbolic ref names, svn
    style - in the .gitmodules file. The actual commit used is still
    recorded in the index.
 
  * when switching branches, if the checked out revision of a submodule
    changes, then it should be switched as well
 
  * 'git submodule update' should be able to be triggered when
    switching branches (but not be the default behaviour)
 
 
Others
------
 
  * 'git export' command that does what
    'git archive -–format=tar –-prefix=dir | tar x' does now
 
  * conflicted merges should point the user immediately to
    'git mergetool' and mention you need to use 'git stage' to mark
    resolved files and 'git commit' when done.
 
  * 'git init --server' (or similar) should do everything required for
    exporting::
----
chmod -R a+rX
touch git-daemon-export-ok
git gc
git update-server-info
chmod u+x .git/hooks/post-update
git config core.sharedrepository=1
----