From: Andreas Ericsson <ae@op5.se>
To: Nicolas Pitre <nico@fluxnic.net>
Cc: Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org
Subject: Re: [1.8.0] reorganize the mess that the source tree has become
Date: Tue, 01 Feb 2011 15:42:12 +0100 [thread overview]
Message-ID: <4D481BC4.2050104@op5.se> (raw)
In-Reply-To: <alpine.LFD.2.00.1101311621150.8580@xanadu.home>
On 01/31/2011 10:28 PM, Nicolas Pitre wrote:
> On Mon, 31 Jan 2011, Jeff King wrote:
>
>> On Mon, Jan 31, 2011 at 03:28:37PM -0500, Nicolas Pitre wrote:
>>
>>> We do have subdirectories for documentation, tests, contributions, etc.
>>> But a sizeable part of the tree is just a big splat of source files
>>> dumped right in the root of the tree.
>>>
>>> So I'd suggest doing the following:
>>>
>>> 1) Create a src/ directory and move *.c, *.h, *.sh, *.perl, *.py and
>>> the builtin directory from the root directory to it.
>>
>> Wouldn't this just be the same giant splat of source files, but in a
>> different tree? I don't really see the advantage, and it seems like an
>> extra annoyance.
>
> Like I said to Junio, if you don't see the advantage, there's nothing I
> can do for you. To me this is simple good source code hygiene.
>
>> Besides being just one more directory to go up and down, it does make
>> history browsing more annoying. As much as I love git's "don't record
>> renames" philosophy, our handling of renames on the viewing side is
>> often annoying. I already get annoyed sometimes following stuff across
>> the s!builtin-!builtin/! change. This would be like that but more so.
>
> So... we do suck at something? So why not take this opportunity to
> shake yourself out of this easy comfort and improve Git as a result on
> both front? :-)
>
>> Or maybe it is a good thing for that reason, as we will eat our own
>> rename dogfood. :)
>
> Exactly! And maybe we'll make Git even more useful in the process.
>
>>> 5) Rename t/ to testsuite/ so this doesn't look like some garbage
>>> leftover.
>>
>> Ugh, more typing. :P
>
> Come on! You sound like an old fart now! ;-)
>
Personally, I kinda like the capital D in Documentation for tab
completion reasons. Keeping frequently used files and directories
with short unique prefixes makes perfect sense from a typing point
of view. Using longer mnemonic names makes perfect sense from a
regex search/replace point of view.
I'm kinda with Junio on the ./*.[ch] -> src/*.[ch] move though, but
perhaps that's just because I hate autoconf projects which generate
a ton of cruft in the root before one can even start building it.
It would probably help matters along if buildproducts ended up in
their own directory though. That way .gitignore won't have so many
extra commits when new source files are added, and 'make clean'
gets easier to maintain.
So to sum up what I'm for;
t/ -> Test/ (or Testsuite, but some more mnemonic name anyways
with a short unique prefix for tab completion). This would also
exercise our rename machinery quite a bit, altohugh not to the
point where people get annoyed if it gets sort-of-broken.
buildproducts to Build/ (capital B to avoid completing against
builtin*). This also has the benefit that %.o: %.c rules makes
tab completion work better when object files are already built,
and "git add git-foo.*" doesn't throw the "git-foo.o is ignored"
error and forces one to re-type it as "git-foo.[ch]"
The ppc stuff I don't really care about and it wouldn't be hard
to resurrect if we remove it and people complain. Everything
will also still work if we do, although with possibly a slight
decrease in performance.
Bulk of source-files stay as ./*.[ch]. I see absolutely no
benefit to moving them, but two potential drawbacks. One is that
it'll cause more typing for those of us who use console-based
editors and run 'make' manually (yes, we do exist). The afore-
mentioned merge+rebase hell is also a considerable drawback,
even though that's primarily an issue for maint releases.
Risks: Well... dunno about that really. Mucking up the build and
test systems, I suppose, but it's easy enough to test.
Cons: Rebasing and merging stuff to the Makefile and test-stuff
will suck a bit, but as has been pointed out that's not only a
bad thing.
Pros: Less typing all-round. Simpler "make clean" rules. Fewer
tacked-on .gitignore patches for new commands. We (well, Junio)
get to experience first-hand the problems of directory renames
across releases but on a smaller scale than moving *everything*
around in one go.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
next prev parent reply other threads:[~2011-02-01 14:42 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-31 5:53 What's cooking in git.git (Jan 2011, #06; Sun, 30) Junio C Hamano
2011-01-31 15:08 ` Sverre Rabbelier
2011-02-08 17:48 ` Sverre Rabbelier
2011-02-08 19:27 ` Junio C Hamano
2011-01-31 17:05 ` Planning for 1.7.5 and 1.8.0 Junio C Hamano
2011-01-31 17:06 ` [1.8.0] default "git merge" without argument to "git merge @{u}" Junio C Hamano
2011-01-31 20:14 ` Jeff King
2011-01-31 20:17 ` Junio C Hamano
2011-01-31 20:32 ` Felipe Contreras
2011-01-31 20:50 ` [1.8.0] (v2) " Junio C Hamano
2011-01-31 22:55 ` Jeff King
2011-02-01 0:01 ` Thomas Adam
2011-02-01 18:34 ` Scott Chacon
2011-02-01 20:11 ` moving to a git-backed wiki Jeff King
2011-02-01 22:36 ` Jay Soffian
2011-02-01 22:48 ` J.H.
2011-02-02 9:55 ` Vincent Hanquez
2011-02-02 10:53 ` Felipe Contreras
2011-02-02 11:14 ` Jakub Narebski
2011-02-03 2:24 ` J.H.
2011-02-03 17:45 ` Jeff King
2011-02-03 19:06 ` Sverre Rabbelier
2011-02-04 6:03 ` Jeff King
2011-02-03 20:34 ` Felipe Contreras
2011-02-04 6:16 ` Jeff King
2011-02-04 17:50 ` Felipe Contreras
2011-02-04 14:34 ` Joey Hess
2011-02-05 7:00 ` david
2011-02-04 7:31 ` [1.8.0] (v2) default "git merge" without argument to "git merge @{u}" Thomas Hochstein
2011-02-04 23:01 ` [PATCH/RFC] Add support for merging from upstream by default Jared Hance
2011-01-31 17:07 ` [1.8.0] Unify "pathspec" semantics Junio C Hamano
2011-02-01 14:56 ` Nguyen Thai Ngoc Duy
2011-01-31 20:28 ` [1.8.0] reorganize the mess that the source tree has become Nicolas Pitre
2011-01-31 20:57 ` Junio C Hamano
2011-01-31 21:08 ` Matthieu Moy
2011-01-31 21:33 ` Nicolas Pitre
2011-01-31 21:19 ` Nicolas Pitre
2011-01-31 21:00 ` Jeff King
2011-01-31 21:28 ` Nicolas Pitre
2011-01-31 22:17 ` Junio C Hamano
2011-01-31 22:36 ` João P. Sampaio
2011-01-31 22:37 ` Nicolas Pitre
2011-01-31 23:12 ` Jeff King
2011-02-01 0:29 ` Nicolas Pitre
2011-02-01 1:48 ` Jeff King
2011-02-01 4:05 ` Nicolas Pitre
2011-02-01 12:42 ` Thomas Rast
2011-02-01 11:14 ` Jonathan Nieder
2011-02-01 11:22 ` Jonathan Nieder
2011-02-01 13:08 ` Nicolas Pitre
2011-02-01 16:02 ` Nguyen Thai Ngoc Duy
2011-02-01 21:53 ` Junio C Hamano
2011-02-01 0:35 ` Erik Faye-Lund
2011-02-01 1:53 ` Jeff King
2011-02-01 1:00 ` Sverre Rabbelier
2011-02-01 1:57 ` Jeff King
2011-02-01 7:24 ` Jay Soffian
2011-02-01 14:42 ` Andreas Ericsson [this message]
2011-01-31 21:59 ` [1.8.0] 't/' is standard name for directory with tests Jakub Narebski
2011-01-31 22:32 ` Nicolas Pitre
2011-02-01 0:12 ` Alex Budovski
2011-02-01 0:33 ` Nicolas Pitre
2011-02-01 0:58 ` Jakub Narebski
2011-02-01 1:15 ` Junio C Hamano
2011-02-02 23:55 ` Sam Vilain
2011-02-01 18:26 ` [1.8.0] split largest remaining scripts, gitk and gitweb Jakub Narebski
2011-02-01 22:15 ` Junio C Hamano
2011-02-01 23:20 ` Jakub Narebski
2011-02-05 3:21 ` [1.8.0] reorganize the mess that the source tree has become Martin von Zweigbergk
2011-01-31 21:44 ` [1.8.0] make two-argument fetch update remote branches Thomas Rast
2011-01-31 22:18 ` Matthieu Moy
2011-01-31 22:24 ` Junio C Hamano
2011-01-31 22:27 ` Eugene Sajine
2011-01-31 23:06 ` Junio C Hamano
2011-01-31 23:39 ` Eugene Sajine
2011-02-01 1:13 ` Junio C Hamano
2011-01-31 23:22 ` Jeff King
2011-02-01 7:04 ` Jay Soffian
2011-02-01 15:58 ` Nguyen Thai Ngoc Duy
2011-02-01 22:09 ` Junio C Hamano
2011-02-01 21:05 ` A Large Angry SCM
2011-02-01 22:39 ` Thomas Rast
2011-02-01 23:25 ` A Large Angry SCM
2011-01-31 21:55 ` [1.8.0] forbid full fetchspecs in git-pull Thomas Rast
2011-01-31 22:38 ` Junio C Hamano
2011-01-31 23:15 ` Dmitry Potapov
2011-02-01 15:14 ` Thomas Rast
2011-02-01 20:23 ` Dmitry Potapov
2011-02-01 3:20 ` Planning for 1.7.5 and 1.8.0 Nguyen Thai Ngoc Duy
2011-02-01 4:16 ` Nicolas Pitre
2011-02-01 14:54 ` [1.8.0] Tag namespaces Marc Branchaud
2011-02-01 15:21 ` Nguyen Thai Ngoc Duy
2011-02-01 18:37 ` [1.8.0] Remove deprecated commands René Scharfe
2011-02-01 22:16 ` Junio C Hamano
2011-02-02 0:57 ` Jonathan Nieder
2011-02-10 19:42 ` René Scharfe
2011-02-10 20:56 ` Jonathan Nieder
2011-02-10 21:08 ` Junio C Hamano
2011-02-12 13:24 ` René Scharfe
2011-02-12 21:04 ` Jonathan Nieder
2011-02-13 23:14 ` Junio C Hamano
2011-02-01 21:41 ` [1.8.0] Handle submodule config options consistently in diff plumbing Jens Lehmann
2011-02-02 11:56 ` [1.8.0] Tracking empty directories Jakub Narebski
2011-02-02 23:23 ` Jay Soffian
2011-02-02 23:33 ` David Aguilar
2011-02-02 23:52 ` Jakub Narebski
2011-02-03 2:21 ` Wesley J. Landaker
2011-02-03 5:53 ` Jonathan Nieder
2011-02-03 10:07 ` Matthieu Moy
2011-02-05 7:43 ` Pete Harlan
2011-02-05 18:31 ` Thomas Koch
2011-02-05 19:00 ` Sverre Rabbelier
2011-02-05 22:37 ` Jared Hance
2011-02-06 20:41 ` Junio C Hamano
2011-02-06 20:46 ` Sverre Rabbelier
2011-02-06 4:42 ` Nguyen Thai Ngoc Duy
2011-02-02 17:23 ` [1.8.0] git-stash invocation changes Thomas Rast
2011-02-02 17:35 ` Shawn Pearce
2011-02-02 18:15 ` Matthieu Moy
2011-02-02 18:51 ` Thomas Rast
2011-02-09 14:35 ` Pat Notz
2011-02-23 19:54 ` [1.8.0] Don't copy "submodule.<name>.update" to .git/config on submodule init Jens Lehmann
2011-02-23 20:28 ` Junio C Hamano
2011-02-23 22:43 ` Jens Lehmann
2011-02-24 0:34 ` Junio C Hamano
2011-02-24 23:44 ` Jens Lehmann
-- strict thread matches above, loose matches on Subject: below --
2011-02-02 2:29 [1.8.0] reorganize the mess that the source tree has become George Spelvin
2011-02-02 8:31 ` Erik Faye-Lund
2011-02-02 20:01 ` Pascal Obry
2011-02-03 6:16 ` Nicolas Pitre
2011-02-03 8:09 ` Miles Bader
2011-02-03 18:01 ` Andreas Schwab
2011-02-03 18:46 ` Eugene Sajine
2011-02-03 21:42 ` Hilco Wijbenga
2011-02-04 2:06 ` Miles Bader
2011-02-04 8:30 ` Tor Arntsen
2011-02-04 10:49 ` Jakub Narebski
2011-02-04 11:17 ` Erik Faye-Lund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D481BC4.2050104@op5.se \
--to=ae@op5.se \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@fluxnic.net \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).