git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Cleaning up git user-interface warts

From
Junio C Hamano <junkio@cox.net>
Date
Nov 15, 2006, 04:33 UTC
Message-ID
<7vd57ps51c.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20061115040852.GL7201@pasky.or.cz>
Petr Baudis <pasky@suse.cz> writes:
Show 13 quoted lines
> On Wed, Nov 15, 2006 at 01:31:50AM CET, Junio C Hamano wrote:
>> 
>> I am of two minds here.
>> 
>> I do not think the Porcelain-ish UI that is shipped with git
>> should be taken with the same degree of "authority" as git
>> Plumbing.
> ..snip passage about workflows..
>
> Controversy's fun, so...
>
> <Cogito maintainer hat _off_> (But yeah, it still looks silly that I'm
> saying this.)

It appears that you are not grumpy as you were anymore ;-). I mostly agree with what you said in your message.

Show 6 quoted lines
> (i) Clearly divided porcelain/plumbing interface, so that you can
> really isolate the two UI-wise; endless confusion reigns there now. Is
> git-update-index porcelain or plumbing? _You_ call git-merge a proper
> porcelain? From my perspective, git-update-ref is as plumbing as it
> gets, but it's classified as porcelain. Etc, etc. This would be by far
> the most important advantage.

Yes. The current "merge" started its life as Linus's porcelain (we did not have fetch and pull infrastructure back then) but quickly has become just a helper for pull to produce a merge commit. If anybody thinks its UI is good as a general end-user level command, there is a need for "head examination".

As you say, update-ref is as plumbing as it gets and it should not be listed as Porcelain; I am a bit surprised that it is labelled as such myself.

No disagreement here, nor (ii) nor (iii).
Show 10 quoted lines
>   (ii) The plumbing and porcelain would not share the same namespace,
> leading to clearer UI. (I'm just inflating (i).)
>
>   (iii) The documentation would not be a strange mix of porcelain and
> plumbing. (More (i) inflation.)
>
>   (iv) (i) is troublesome because I have a feeling that Junio declared
> several times that he doesn't care that much about stable API for
> porcelain compared to the plumbing. But with the current mix it's
> desirable to use some porcelain even in other porcelains and in scripts.
This is true and it is a problem.

While we encourage Porcelain writers to use plumbing in order to give git Porcelain-ish more freedom to evolve to give better UI for humans, not having a clear distinction between the two makes it harder.

>   (v) Git would be properly libified by now. If you wanted to convert
> bits of porcelain to C, it would be at least much higher priority.

I am not sure about "libified" part and I do not know what bits of porcelain wants to become C right now. But I do not think this point is important part of your list.

>   (vi) You wouldn't need to make the gruesome choice on what is the
> canonical workflow the _the_ Git porcelain supports (see the snipped
> passage). Or you would, but it would have less impact.
Yes.  This is really important.

Linus and me having done Porcelain-ish that supports integrator role workflow better than other workflows such as contributor role should not discourage people from working on alternative or complementary Porcelains to help other workflows better (see the snipped passage).

StGIT sets a great example, and efforts like it is encoraged more.

I think both Linus and myself tried to make it clear that the purpose of Porcelain-ish that comes with core git is 50% to make plumbing (perhaps minimally) usable and the other 50% to serve as an example for Porcelain writers to learn how to use the plumbing, but we should probably have stressed the latter better.

Previous: Petr BaudisNext: Nicolas Pitre
Message 10 of 240 in “commit: Steer new users toward "git commit -a" rather than update-index”
  1. commit: Steer new users toward "git commit -a" rather than update-indexCarl Worth, Nov 14, 2006
  2. Andy WhitcroftNov 14, 2006
  3. Cleaning up git user-interface wartsCarl Worth, Nov 14, 2006
  4. Shawn PearceNov 14, 2006
  5. Carl WorthNov 14, 2006
  6. Petr BaudisNov 14, 2006
  7. Carl WorthNov 14, 2006
  8. Junio C HamanoNov 15, 2006
  9. Petr BaudisNov 15, 2006
  10. Junio C HamanoNov 15, 2006
  11. Nicolas PitreNov 15, 2006
  12. Jakub NarebskiNov 15, 2006
  13. Santi BéjarNov 15, 2006
  14. Jakub NarebskiNov 15, 2006
  15. Petr BaudisNov 16, 2006
  16. Nicolas PitreNov 15, 2006
  17. Petr BaudisNov 15, 2006
  18. Jakub NarebskiNov 15, 2006
  19. Karl HasselströmNov 15, 2006
  20. Carl WorthNov 15, 2006
  21. Jakub NarebskiNov 15, 2006
  22. Shawn PearceNov 15, 2006
  23. Carl WorthNov 15, 2006
  24. Steven GrimmNov 17, 2006
  25. Junio C HamanoNov 17, 2006
  26. Petr BaudisNov 17, 2006
  27. Karl HasselströmNov 14, 2006
  28. Nicolas PitreNov 14, 2006
  29. Jakub NarebskiNov 14, 2006
  30. Nicolas PitreNov 14, 2006
  31. Jakub NarebskiNov 14, 2006
  32. Nicolas PitreNov 14, 2006
  33. Carl WorthNov 14, 2006
  34. Jakub NarebskiNov 14, 2006
  35. Nicolas PitreNov 14, 2006
  36. Junio C HamanoNov 14, 2006
  37. Nicolas PitreNov 15, 2006
  38. Junio C HamanoNov 15, 2006
  39. Michael K. EdwardsNov 15, 2006
  40. Nicolas PitreNov 15, 2006
  41. Junio C HamanoNov 15, 2006
  42. Linus TorvaldsNov 15, 2006
  43. Jakub NarebskiNov 15, 2006
  44. Josef WeidendorferNov 15, 2006
  45. Petr BaudisNov 15, 2006
  46. Josef WeidendorferNov 15, 2006
  47. Linus TorvaldsNov 15, 2006
  48. Nicolas PitreNov 15, 2006
  49. Shawn PearceNov 15, 2006
  50. Marko MacekNov 15, 2006
  51. Junio C HamanoNov 15, 2006
  52. Shawn PearceNov 15, 2006
  53. Marko MacekNov 16, 2006
  54. Junio C HamanoNov 16, 2006
  55. Jakub NarebskiNov 17, 2006
  56. SeanNov 15, 2006
  57. Andy ParkinsNov 15, 2006
  58. Linus TorvaldsNov 15, 2006
  59. Michael K. EdwardsNov 15, 2006
  60. Linus TorvaldsNov 15, 2006
  61. Nicolas PitreNov 15, 2006
  62. Linus TorvaldsNov 15, 2006
  63. Carl WorthNov 15, 2006
  64. Junio C HamanoNov 15, 2006
  65. Nicolas PitreNov 15, 2006
  66. Junio C HamanoNov 15, 2006
  67. Nicolas PitreNov 15, 2006
  68. Karl HasselströmNov 17, 2006
  69. Linus TorvaldsNov 15, 2006
  70. Carl WorthNov 15, 2006
  71. Shawn PearceNov 15, 2006
  72. Linus TorvaldsNov 15, 2006
  73. Nicolas PitreNov 16, 2006
  74. Linus TorvaldsNov 16, 2006
  75. Nicolas PitreNov 16, 2006
  76. Michael K. EdwardsNov 16, 2006
  77. Andreas EricssonNov 16, 2006
  78. Carl WorthNov 16, 2006
  79. Michael K. EdwardsNov 16, 2006
  80. Carl WorthNov 16, 2006
  81. Junio C HamanoNov 17, 2006
  82. Carl WorthNov 17, 2006
  83. Johannes SchindelinNov 17, 2006
  84. Junio C HamanoNov 17, 2006
  85. Shawn PearceNov 17, 2006
  86. Junio C HamanoNov 17, 2006
  87. SeanNov 15, 2006
  88. Jerome LovyNov 21, 2006
  89. Theodore TsoNov 16, 2006
  90. Andreas EricssonNov 16, 2006
  91. Linus TorvaldsNov 16, 2006
  92. Carl WorthNov 16, 2006
  93. Linus TorvaldsNov 16, 2006
  94. SeanNov 16, 2006
  95. Anand KumriaNov 16, 2006
  96. Junio C HamanoNov 15, 2006
  97. Theodore TsoNov 16, 2006
  98. Junio C HamanoNov 16, 2006
  99. Alexandre JulliardNov 16, 2006
  100. Petr BaudisNov 16, 2006
  101. Alexandre JulliardNov 16, 2006
  102. Jakub NarebskiNov 17, 2006
  103. Alexandre JulliardNov 17, 2006
  104. Jakub NarebskiNov 17, 2006
  105. Han-Wen NienhuysNov 16, 2006
  106. Jakub NarebskiNov 16, 2006
  107. Junio C HamanoNov 16, 2006
  108. Han-Wen NienhuysNov 16, 2006
  109. Junio C HamanoNov 16, 2006
  110. Junio C HamanoNov 16, 2006
  111. Junio C HamanoNov 16, 2006
  112. Linus TorvaldsNov 16, 2006
  113. Junio C HamanoNov 16, 2006
  114. Han-Wen NienhuysNov 16, 2006
  115. Junio C HamanoNov 16, 2006
  116. Han-Wen NienhuysNov 16, 2006
  117. Han-Wen NienhuysNov 16, 2006
  118. Jakub NarebskiNov 17, 2006
  119. Han-Wen NienhuysNov 24, 2006
  120. Jakub NarebskiNov 24, 2006
  121. Johannes SchindelinDec 5, 2006
  122. Junio C HamanoDec 5, 2006
  123. pretty-formats: add 'format:<string>'Johannes Schindelin, Feb 23, 2007
  124. Han-Wen NienhuysFeb 23, 2007
  125. Johannes SchindelinFeb 23, 2007
  126. Robin RosenbergFeb 23, 2007
  127. Johannes SchindelinFeb 24, 2007
  128. Junio C HamanoFeb 23, 2007
  129. Johannes SchindelinFeb 23, 2007
  130. Junio C HamanoFeb 23, 2007
  131. Johannes SchindelinFeb 23, 2007
  132. Linus TorvaldsNov 16, 2006
  133. Han-Wen NienhuysNov 16, 2006
  134. Linus TorvaldsNov 16, 2006
  135. multi-project repos (was Re: Cleaning up git user-interface warts)Han-Wen Nienhuys, Nov 16, 2006
  136. Linus TorvaldsNov 16, 2006
  137. Junio C HamanoNov 16, 2006
  138. Linus TorvaldsNov 16, 2006
  139. Shawn PearceNov 17, 2006
  140. Linus TorvaldsNov 17, 2006
  141. Carl WorthNov 17, 2006
  142. Shawn PearceNov 17, 2006
  143. Carl WorthNov 17, 2006
  144. Shawn PearceNov 17, 2006
  145. Marko MacekNov 17, 2006
  146. Junio C HamanoNov 17, 2006
  147. Junio C HamanoNov 17, 2006
  148. Shawn PearceNov 18, 2006
  149. Junio C HamanoNov 18, 2006
  150. Shawn PearceNov 18, 2006
  151. Johannes SchindelinNov 16, 2006
  152. Junio C HamanoNov 16, 2006
  153. Johannes SchindelinNov 17, 2006
  154. Linus TorvaldsNov 16, 2006
  155. Linus TorvaldsNov 16, 2006
  156. Johannes SchindelinNov 16, 2006
  157. Linus TorvaldsNov 17, 2006
  158. Carl WorthNov 17, 2006
  159. Johannes SchindelinNov 17, 2006
  160. Petr BaudisNov 17, 2006
  161. Johannes SchindelinNov 17, 2006
  162. Han-Wen NienhuysNov 16, 2006
  163. Han-Wen NienhuysNov 16, 2006
  164. Jakub NarebskiNov 17, 2006
  165. Linus TorvaldsNov 16, 2006
  166. Junio C HamanoNov 16, 2006
  167. Linus TorvaldsNov 16, 2006
  168. Junio C HamanoNov 16, 2006
  169. Linus TorvaldsNov 16, 2006
  170. Carl WorthNov 16, 2006
  171. Johannes SchindelinNov 16, 2006
  172. Linus TorvaldsNov 16, 2006
  173. Han-Wen NienhuysNov 17, 2006
  174. Junio C HamanoNov 17, 2006
  175. Han-Wen NienhuysNov 17, 2006
  176. Petr BaudisNov 17, 2006
  177. Carl WorthNov 17, 2006
  178. Carl WorthNov 17, 2006
  179. Linus TorvaldsNov 17, 2006
  180. Han-Wen NienhuysNov 17, 2006
  181. Michael K. EdwardsNov 17, 2006
  182. Michael K. EdwardsNov 17, 2006
  183. Junio C HamanoNov 17, 2006
  184. Michael K. EdwardsNov 18, 2006
  185. Jakub NarebskiNov 17, 2006
  186. Petr BaudisNov 16, 2006
  187. Petr BaudisNov 15, 2006
  188. Nicolas PitreNov 15, 2006
  189. Linus TorvaldsNov 15, 2006
  190. Nicolas PitreNov 15, 2006
  191. Anand KumriaNov 16, 2006
  192. Junio C HamanoNov 14, 2006
  193. Junio C HamanoNov 14, 2006
  194. Nicolas PitreNov 15, 2006
  195. Junio C HamanoNov 15, 2006
  196. Shawn PearceNov 15, 2006
  197. Junio C HamanoNov 15, 2006
  198. Johannes SchindelinNov 15, 2006
  199. SeanNov 15, 2006
  200. Nicolas PitreNov 15, 2006
  201. Junio C HamanoNov 15, 2006
  202. Andy ParkinsNov 15, 2006
  203. Junio C HamanoNov 15, 2006
  204. Nicolas PitreNov 15, 2006
  205. Carl WorthNov 15, 2006
  206. Junio C HamanoNov 15, 2006
  207. Carl WorthNov 15, 2006
  208. Petr BaudisNov 16, 2006
  209. Robin RosenbergNov 16, 2006
  210. Petr BaudisNov 16, 2006
  211. Han-Wen NienhuysNov 16, 2006
  212. Andy ParkinsNov 15, 2006
  213. Jakub NarebskiNov 15, 2006
  214. Andy ParkinsNov 15, 2006
  215. Karl HasselströmNov 15, 2006
  216. Andy ParkinsNov 15, 2006
  217. Nicolas PitreNov 15, 2006
  218. Junio C HamanoNov 15, 2006
  219. Nicolas PitreNov 15, 2006
  220. Karl HasselströmNov 16, 2006
  221. Alan ChandlerNov 18, 2006
  222. Junio C HamanoNov 15, 2006
  223. Andy ParkinsNov 15, 2006
  224. Petr BaudisNov 16, 2006
  225. Andreas EricssonNov 15, 2006
  226. Jakub NarebskiNov 15, 2006
  227. Petr BaudisNov 16, 2006
  228. Petr BaudisNov 16, 2006
  229. Junio C HamanoNov 16, 2006
  230. Petr BaudisNov 16, 2006
  231. Junio C HamanoNov 16, 2006
  232. Petr BaudisNov 16, 2006
  233. Junio C HamanoNov 17, 2006
  234. Han-Wen NienhuysNov 17, 2006
  235. Alan ChandlerNov 18, 2006
  236. Junio C HamanoNov 14, 2006
  237. Shawn PearceNov 15, 2006
  238. Richard CURNOWNov 16, 2006
  239. Johannes SchindelinNov 16, 2006
  240. Petr BaudisNov 16, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.