# What's in git.git (stable)

18 messages from 2007-04-16 to 2007-05-07. Participants: Junio C Hamano, Andy Parkins, Nicolas Pitre, Linus Torvalds, J. Bruce Fields, Jakub Narebski, Frank Lichtenheld.
Thread: https://gitlist.dev/t/7669

## Junio C Hamano, 2007-04-16 01:27

Subject: What's in git.git (stable)
Message-ID: <7vfy71yupd.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vfy71yupd.fsf%40assigned-by-dhcp.cox.net

```
Perhaps we would need 1.5.1.2 to push out a few accumulated
small fixes on 'maint'.

----------------------------------------------------------------

* The 'maint' branch has these fixes since v1.5.1.1.

 Alex Riesen (2):
  Use rev-list --reverse in git-rebase.sh
  Document -g (--walk-reflogs) option of git-log

 Eygene Ryabinkin (2):
  Teach gitk to use the user-defined UI font everywhere.
  Improve look-and-feel of the gitk tool.

 Frank Lichtenheld (4):
  config.txt: Document gitcvs.allbinary
  config.txt: Document core.autocrlf
  config.txt: Change pserver to server in description of gitcvs.*
  config.txt: Fix grammatical error in description of http.noEPSV

 Jim Meyering (1):
  sscanf/strtoul: parse integers robustly

 Junio C Hamano (1):
  Do not default to --no-index when given two directories.

 Linus Torvalds (1):
  git-quiltimport complaining yet still working

 Matthias Lederhofer (1):
  handle_options in git wrapper miscounts the options it handled.

 Michael Spang (1):
  git-blame: Fix overrun in fake_working_tree_commit()


* The 'master' branch has these since the last announcement
  in addition to the above.

 Frank Lichtenheld (2):
  gitweb: Allow forks with project list file
  gitweb: Allow configuring the default projects order and add order 'none'

 Jim Meyering (1):
  sscanf/strtoul: parse integers robustly

 Junio C Hamano (5):
  Add %m to '--pretty=format:'
  Refactor patch-id filtering out of git-cherry and git-format-patch.
  git-log --cherry-pick A...B
  Documentation: --cherry-pick
  Fix git {log,show,...} --pretty=email

 Luiz Fernando N. Capitulino (2):
  ident.c: Use const qualifier for 'struct passwd' parameters
  ident.c: Use size_t (instead of int) to store sizes

 René Scharfe (1):
  git-archive: make tar the default format

 Robin H. Johnson (2):
  Add custom subject prefix support to format-patch (take 3)
  Add testcase for format-patch --subject-prefix (take 3)

 Shawn O. Pearce (1):
  Don't yap about merge-subtree during make

```

## Junio C Hamano, 2007-04-18 23:58

Subject: What's in git.git (stable)
Message-ID: <7virbtck12.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7virbtck12.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <7vfy71yupd.fsf@assigned-by-dhcp.cox.net>

```
Accumulated fixes on 'maint' are mostly documentation updates.
I will do a 1.5.1.2 probably this weekend, when I find time.

On 'master' are Frank's cvsserver updates to use DBI to allow
backends other than sqlite.  There also is an update to
merge-recursive to make it saner for merges that involves a
directory changing to a file (or vice versa).

I did not hear anything positive nor negative while they were on
'next', so if you have been using cvsserver or merge and this
breaks them for you, you had it coming.  At least you can keep
both pieces ;-).

But more seriously, hopefully no news was a good news.  There
are also other minor new features and enhancements on 'master'.

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last announcement.

 Alex Riesen (1):
  Fix overwriting of files when applying contextually independent diffs

 Andrew Ruder (4):
  Update git-am documentation
  Update git-applymbox documentation
  Update git-apply documentation
  Update git-annotate/git-blame documentation

 Carlos Rica (1):
  Use const qualifier for 'sha1' parameter in delete_ref function

 Eric Wong (3):
  git-svn: respect lower bound of -r/--revision when following parent
  git-svn: quiet some warnings when run only with --version/--help
  git-svn: don't allow globs to match regular files

 Frank Lichtenheld (1):
  git-shortlog: Fix two formatting errors in asciidoc documentation

 Gerrit Pape (2):
  variable $projectdesc needs to be set before checking against unchanged default.
  Have sample update hook not refuse deleting a branch through push.

 J. Bruce Fields (7):
  Documentation: minor edits of git-lost-found manpage
  Documentation: clarify git-checkout -f, minor editing
  Documentation: clarify track/no-track option.
  user-manual: fix discussion of default clone
  user-manual: detached HEAD
  user-manual: start revising "internals" chapter
  user-manual: use detached head when rewriting history

 Junio C Hamano (1):
  Start preparing for 1.5.1.2

 Shawn O. Pearce (1):
  git-gui: Brown paper bag fix division by 0 in blame


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (2):
  Fix t4201: accidental arithmetic expansion
  Fix permissions on test scripts

 Andrew Ruder (1):
  Add policy on user-interface changes

 Christian Couder (2):
  Bisect: simplify "bisect start" logging.
  Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".

 Eygene Ryabinkin (4):
  Allow wish interpreter to be defined with TCLTK_PATH
  Teach git-gui to use the user-defined UI font everywhere.
  Improve look-and-feel of the git-gui tool.
  Do not break git-gui messages into multiple lines.

 Frank Lichtenheld (12):
  cvsserver: Introduce new state variable 'method'
  cvsserver: Handle three part keys in git config correctly
  cvsserver: Allow to override the configuration per access method
  cvsserver: Make the database backend configurable
  cvsserver: Abort if connect to database fails
  cvsserver: Use DBI->table_info instead of DBI->tables
  cvsserver: Corrections to the database backend configuration
  cvsserver: Add asciidoc documentation for new database backend configuration
  cvsserver: Allow to "add" a removed file
  cvsserver: Reword documentation on necessity of write access
  cvsserver: Document the GIT branches -> CVS modules mapping more prominently
  config.txt: Add gitcvs.db* variables

 Johannes Schindelin (1):
  Use print_wrapped_text() in shortlog

 Junio C Hamano (9):
  shortlog -w: make wrap-line behaviour optional.
  t1000: fix case table.
  Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
  merge-recursive: do not barf on "to be removed" entries.
  merge-recursive: handle D/F conflict case more carefully.
  t3030: merge-recursive backend test.
  send-email: do not leave an empty CC: line if no cc is present.
  git-gui: Honor TCLTK_PATH if supplied
  Update draft release notes for 1.5.2 with accumulated changes.

 Linus Torvalds (2):
  Add a generic "object decorator" interface, and make object refs use it
  Add support for "commit name decorations" to log family of commands

 Michael S. Tsirkin (1):
  Display the subject of the commit just made.

 Shawn O. Pearce (3):
  Always bind the return key to the default button
  git-gui: Display the directory basename in the title
  Revert "Allow wish interpreter to be defined with TCLTK_PATH"

 Steven Grimm (3):
  Add --quiet option to suppress output of "rm" commands for removed files.
  git-rm: Trivial fix for a comment typo.
  Add --ignore-unmatch option to exit with zero status when no files are removed.

```

## Junio C Hamano, 2007-04-22 06:22

Subject: What's in git.git (stable)
Message-ID: <7vlkglq664.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vlkglq664.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <7virbtck12.fsf@assigned-by-dhcp.cox.net>

```
The latest maintenance release v1.5.1.2 is out.

Tonight's 'master' contains 64-bit index, core subproject
support, and gitattributes (but not the controversial "filter"
part).  As I promised I'd do something about attributes some
time ago (I think it was during v1.5.1 stabilization period), I
am reasonably happy with the state of 'master' right now.  The
other two major topics are also nice, unexpected bonus toward
v1.5.2 from my point of view.

Please expect stabilization cycle for v1.5.2 to start soon.

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last
  announcement; these are all contained in v1.5.1.2, the latest
  maintenance release.

 Andrew Ruder (4):
  Update git-archive documentation
  Update git-cherry-pick documentation
  Fix unmatched emphasis tag in git-tutorial
  Update git-config documentation

 Andy Whitcroft (1):
  fix up strtoul_ui error handling

 Eric Wong (1):
  perl: install private Error.pm if the site version is older than our own

 Junio C Hamano (2):
  git-clone: fix dumb protocol transport to clone from pack-pruned ref
  GIT 1.5.1.2

 Sam Vilain (1):
  git-tar-tree: complete deprecation conversion message


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (2):
  Tests for core subproject support
  Simplify calling of CR/LF conversion routines

 Alexandre Julliard (1):
  git.el: Add a commit description to the reflog.

 Aneesh Kumar K.V (1):
  gitview: annotation support

 Brian Gernhardt (1):
  Remove case-sensitive file in t3030-merge-recursive.

 James Bowes (1):
  Document git-check-attr

 Julian Phillips (1):
  refs.c: add a function to sort a ref list, rather then sorting on add

 Junio C Hamano (30):
  git-fetch--tool pick-rref
  git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
  Add basic infrastructure to assign attributes to paths
  Define 'crlf' attribute.
  Teach 'diff' about 'diff' attribute.
  Fix 'crlf' attribute semantics.
  Fix 'diff' attribute semantics.
  Makefile: add patch-ids.h back in.
  attribute macro support
  Define a built-in attribute macro "binary".
  Change attribute negation marker from '!' to '-'.
  Make sure quickfetch is not fooled with a previous, incomplete fetch.
  Allow more than true/false to attributes.
  merge-recursive: separate out xdl_merge() interface.
  Allow specifying specialized merge-backend per path.
  Add a demonstration/test of customized merge.
  Custom low-level merge driver support.
  Allow the default low-level merge driver to be configured.
  Custom low-level merge driver: change the configuration scheme.
  Allow low-level driver to specify different behaviour during internal merge.
  Fix funny types used in attribute value representation
  Counto-fix in merge-recursive
  Simplify code to find recursive merge driver.
  Documentation: support manual section (5) - file formats.
  Update 'crlf' attribute semantics.
  Document gitattributes(5)
  git-add -u: match the index with working tree.
  Fix bogus linked-list management for user defined merge drivers.
  convert.c: restructure the attribute checking part.
  lockfile: record the primary process.

 Linus Torvalds (21):
  diff-lib: use ce_mode_from_stat() rather than messing with modes manually
  Avoid overflowing name buffer in deep directory structures
  Add 'resolve_gitlink_ref()' helper function
  Add "S_IFDIRLNK" file mode infrastructure for git links
  Teach "fsck" not to follow subproject links
  Teach core object handling functions about gitlinks
  Fix thinko in subproject entry sorting
  Teach directory traversal about subprojects
  Teach git-update-index about gitlinks
  Don't show gitlink directories when we want "other" files
  Teach git list-objects logic not to follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix gitlink index entry filesystem matching
  Teach git list-objects logic to not follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix some "git ls-files -o" fallout from gitlinks
  Expose subprojects as special files to "git diff" machinery
  Use proper object allocators for unknown object nodes too
  Clean up object creation to use more common code
  Fix working directory errno handling when unlinking a directory
  Fix a copy-n-paste bug in the object decorator code.

 Nicolas Pitre (27):
  get rid of num_packed_objects()
  make overflow test on delta base offset work regardless of variable size
  add overflow tests on pack offset variables
  compute a CRC32 for each object as stored in a pack
  compute object CRC32 with index-pack
  pack-objects: learn about pack index version 2
  index-pack: learn about pack index version 2
  sha1_file.c: learn about index version 2
  show-index.c: learn about index v2
  pack-redundant.c: learn about index v2
  allow forcing index v2 and 64-bit offset treshold
  validate reused pack data with CRC when possible
  simple random data generator for tests
  use test-genrandom in tests instead of /dev/urandom
  tests for various pack index features
  clean up add_object_entry()
  pack-objects: optimize preferred base handling a bit
  pack-objects: equal objects in size should delta against newer objects
  pack-objects: rework check_delta_limit usage
  pack-objects: clean up list sorting
  pack-objects: get rid of reuse_cached_pack
  pack-objects: get rid of create_final_object_list()
  pack-objects: make in_pack_header_size a variable of its own
  add get_size_from_delta()
  pack-objects: better check_object() performances
  pack-objects: remove obsolete comments
  document --index-version for index-pack and pack-objects

 Shawn O. Pearce (2):
  Contribute a fairly paranoid update hook
  Kill the useless progress meter in merge-recursive

```

## Junio C Hamano, 2007-04-23 07:04

Subject: What's in git.git (stable)
Message-ID: <7v7is3inbw.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v7is3inbw.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <7vlkglq664.fsf@assigned-by-dhcp.cox.net>

```
Together with fixes to pack-objects mode bits gotcha that caused
quite a traffic on the list this morning, and crlf conversion
bug from Alex, I've fast-tracked a few topics to 'master' tonight:

 - Nico's progress meter clean-up.
 - My custom diff driver in gitattributes series.

By "fast-track", I mean there might still be bugs in the code
but there do not seem to be anything contentious in the design,
and I trust the people who can fix possible breakages are
responsive.  I think "ident" attribute to expand "$ident$" in
blobs is probably less controversial as it is a stateless
transformation, but I left it out for now.

The tip of 'master' tonight is v1.5.2-rc0.  I am reasonably sure
that I have missed a few topics that we saw/reviewed patches for
the past several days.  Please do not get discouraged as I have
not necessarily rejected them; I was just busy whipping v1.5.1.2
and the 'master' branch into shape tonight.  Please discuss the
patches that are missing from tonight's 'master' for possible
inclusion in the coming few days, and then let's declare feature
freeze by the end of the week with v1.5.2-rc1.  After that, the
usual rules for stabilization period applies (no new features,
only fixes including documentation updates).

----------------------------------------------------------------

* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (2):
  Fix a typo in crlf conversion code
  Fix crash in t0020 (crlf conversion)

 Junio C Hamano (8):
  Update documentation links to point at v1.5.1.2
  Documentation/Makefile: fix section (5) installation
  Update draft release notes for v1.5.2
  pack-objects: quickfix for permission modes.
  Fix 'quickfix' on pack-objects.
  Update tests not to assume that generated packfiles are writable.
  pack-objects: make generated packfile read-only
  Support 'diff=pgm' attribute

 Martin Koegler (1):
  gitweb: Show "no difference" message for empty diff

 Nicolas Pitre (4):
  common progress display support
  make progress "title" part of the common progress interface
  provide a facility for "delayed" progress reporting
  delay progress display when checking out files

 Shawn O. Pearce (1):
  Cleanup variables in cat-file

```

## Junio C Hamano, 2007-04-27 08:34

Subject: What's in git.git (stable)
Message-ID: <1177662893872-git-send-email-junkio@cox.net>
URL: https://gitlist.dev/e/1177662893872-git-send-email-junkio%40cox.net
In-Reply-To: <7v7is3inbw.fsf@assigned-by-dhcp.cox.net>

```
We've accumulated quite a bit of fixes on 'maint', so I need to
do a 1.5.1.3 release soonish, as we will go into feature freeze
on 'master' shortly in preparation for 1.5.2.

On the 'master' front, things have been stabilizing.  Modulo
documentation updates and bugfixes, I expect what we have here
tonight will be pretty much what the final 1.5.2 would look
like.  I already know Shawn has plans to feed git-gui 0.6.6
updates, which should also be included in the final one.

But I might have missed or dismissed patches we have seen and
reviewed on the list recently that deserve to be in 1.5.2, so
please raise hand if you see something missing.  After that,
I'll tag v1.5.2-rc1 and from there we will do the usual "no new
features, options, commands -- only fixes", which hopefully will
happen on Monday.

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last announcement.

 Adam Roben (3):
  Remove usernames from all commit messages, not just when using svmprops
  git-svn: Don't rely on $_ after making a function call
  git-svn: Ignore usernames in URLs in find_by_url

 Alex Riesen (1):
  Fix handle leak in write_tree

 Andrew Ruder (8):
  Removing -n option from git-diff-files documentation
  Document additional options for git-fetch
  Update git-fmt-merge documentation
  Update git-grep documentation
  Update -L documentation for git-blame/git-annotate
  Update git-http-push documentation
  Update git-local-fetch documentation
  Update git-http-fetch documentation

 Brian Gernhardt (2):
  Reverse the order of -b and --track in the man page.
  Ignore all man sections as they are generated files.

 Gerrit Pape (1):
  Documentation/git-reset.txt: suggest git commit --amend in example.

 Johannes Schindelin (1):
  dir.c(common_prefix): Fix two bugs

 Josh Triplett (2):
  Fix typo in git-am: s/Was is/Was it/
  Create a sysconfdir variable, and use it for ETC_GITCONFIG

 Junio C Hamano (3):
  Build RPM with ETC_GITCONFIG=/etc/gitconfig
  applymbox & quiltimport: typofix.
  Start preparing for 1.5.1.3

 Robin H. Johnson (10):
  Document --dry-run parameter to send-email.
  Prefix Dry- to the message status to denote dry-runs.
  Debugging cleanup improvements
  Change the scope of the $cc variable as it is not needed outside of send_message.
  Perform correct quoting of recipient names.
  Validate @recipients before using it for sendmail and Net::SMTP.
  Ensure clean addresses are always used with Net::SMTP
  Allow users to optionally specify their envelope sender.
  Document --dry-run and envelope-sender for git-send-email.
  Sanitize @to recipients.

 Shawn O. Pearce (1):
  Actually handle some-low memory conditions


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (3):
  Avoid excessive rewrites in merge-recursive
  Add a test for merging changed and rename-changed branches
  Ignore merged status of the file-level merge

 Andy Parkins (3):
  post-receive-email example hook: fastforward should have been fast_forward
  post-receive-email example hook: detect rewind-only updates and output sensible message
  post-receive-email example hook: sed command for getting description was wrong

 Johannes Schindelin (1):
  t4201: Do not display weird characters on the terminal

 Josh Triplett (1):
  Add clean.requireForce option, and add -f option to git-clean to override it

 Junio C Hamano (9):
  Move index-related variables into a structure.
  Make read-cache.c "the_index" free.
  Document "diff=driver" attribute
  t5302: avoid using tail -c
  t6030: grab commit object name as we go
  Diff between two blobs should take mode changes into account now.
  t/test-lib.sh: Protect ourselves from common misconfiguration
  gitattributes documentation: clarify overriding
  Add --date={local,relative,default}

 Luiz Fernando N. Capitulino (5):
  remove_subtree(): Use strerror() when possible
  entry.c: Use const qualifier for 'struct checkout' parameters
  read_cache_from(): small simplification
  core-tutorial: minor fixes
  init_buffer(): Kill buf pointer

 Martin Koegler (5):
  Add S_IFINVALID mode
  add get_sha1_with_mode
  add add_object_array_with_mode
  store mode in rev_list, if <tree>:<filename> syntax is used
  use mode of the tree in git-diff, if <tree>:<file> syntax is used

 Nicolas Pitre (1):
  add file checkout progress

 OGAWA Hirofumi (1):
  git-fetch: Fix "argument list too long"

 Sami Farin (1):
  fast-import: size_t vs ssize_t

 Shawn O. Pearce (1):
  Don't repack existing objects in fast-import

 Uwe Kleine-König (1):
  fix importing of subversion tars

```

## Andy Parkins, 2007-04-27 09:19

Subject: Re: What's in git.git (stable)
Message-ID: <200704271019.56341.andyparkins@gmail.com>
URL: https://gitlist.dev/e/200704271019.56341.andyparkins%40gmail.com
In-Reply-To: <1177662893872-git-send-email-junkio@cox.net>

```
On Friday 2007 April 27, Junio C Hamano wrote:
> We've accumulated quite a bit of fixes on 'maint', so I need to
> do a 1.5.1.3 release soonish, as we will go into feature freeze
> on 'master' shortly in preparation for 1.5.2.

I am still concerned about the submodule thing - once we push a mainline 
version out with the format decided, that will be that and we'll be stuck 
with it.  Are we _really_ sure that it's right to have a non-object hash in 
the tree objects?

It's a fundamental change in the form of the tree: at the moment every hash in 
the tree object represents another object in the same repository; with 
gitlink as it is, that convention is broken.

Let's be really, really sure.  I'm not sure a big enough fuss has been made of 
the fact that this is a change of repository format.  Before this you could 
pretty much access any repository with any version.


Andy
-- 
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com

```

## Nicolas Pitre, 2007-04-27 14:01

Subject: Re: What's in git.git (stable)
Message-ID: <alpine.LFD.0.98.0704270938000.6186@xanadu.home>
URL: https://gitlist.dev/e/alpine.LFD.0.98.0704270938000.6186%40xanadu.home
In-Reply-To: <200704271019.56341.andyparkins@gmail.com>

```
On Fri, 27 Apr 2007, Andy Parkins wrote:

> I am still concerned about the submodule thing - once we push a mainline 
> version out with the format decided, that will be that and we'll be stuck 
> with it.  Are we _really_ sure that it's right to have a non-object hash in 
> the tree objects?
> 
> It's a fundamental change in the form of the tree: at the moment every hash in 
> the tree object represents another object in the same repository; with 
> gitlink as it is, that convention is broken.
> 
> Let's be really, really sure.  I'm not sure a big enough fuss has been made of 
> the fact that this is a change of repository format.  Before this you could 
> pretty much access any repository with any version.

I think it is reasonable to say that if you intend to work with a repo 
that contains references to submodules, then you need to upgrade your 
Git version.  It is not like if the Git licensing fees are really 
prohibitive.


Nicolas

```

## Andy Parkins, 2007-04-27 15:21

Subject: Re: What's in git.git (stable)
Message-ID: <200704271621.50257.andyparkins@gmail.com>
URL: https://gitlist.dev/e/200704271621.50257.andyparkins%40gmail.com
In-Reply-To: <alpine.LFD.0.98.0704270938000.6186@xanadu.home>

```
On Friday 2007 April 27, Nicolas Pitre wrote:

> I think it is reasonable to say that if you intend to work with a repo
> that contains references to submodules, then you need to upgrade your
> Git version.  It is not like if the Git licensing fees are really
> prohibitive.

:-)  Absolutely.

The case I was thinking about was when the server hosting your project doesn't 
have submodule support and isn't under your direct control.  For example: 
kernel.org and repo.or.cz.  The same is true for those people for whom the IT 
department manage their central server, and aren't very helpful.

In those cases, that repository is being used as storage, it's bare, doesn't 
have an index and doesn't ever checkout the files.  If submodule support were 
capable of being stored (not checked out) by an older git, then people can 
use submodules merely if they have support on the client side.

There's also the distributions to think about - taking Debian as an example - 
a lot of people stick with stable only (especially for servers) - and stable 
is stuck with 1.4.4.4.  It's going to be a long time before a 
submodule-capable git hits Debian stable.



Andy

-- 
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com

```

## Linus Torvalds, 2007-04-27 17:11

Subject: Re: What's in git.git (stable)
Message-ID: <alpine.LFD.0.98.0704271002310.9964@woody.linux-foundation.org>
URL: https://gitlist.dev/e/alpine.LFD.0.98.0704271002310.9964%40woody.linux-foundation.org
In-Reply-To: <200704271019.56341.andyparkins@gmail.com>

```


On Fri, 27 Apr 2007, Andy Parkins wrote:
> 
> Let's be really, really sure.  I'm not sure a big enough fuss has been made of 
> the fact that this is a change of repository format.  Before this you could 
> pretty much access any repository with any version.

I'm personally really really sure. The whole point of subprojects (at 
least the way _I_ envisioned them) was to have them point to objects 
outside the same repository, so it's more than just an implementation 
detail, it's very much design.

And yes, of course we could have made it point to a blob inside the 
superproject, and have that blob then contain a SHA1 that old versions of 
git wouldn't have known to follow. But that would have been pretty hacky, 
and old versions of git would _still_ have had trouble with the new 
feature: at a minimum, git-fsck would always complain about the invalid 
mode (and things like "git diff" would too - I think it used to just die 
on unknown modes).

The "git-fsck/diff not working" thing might be seen as something that 
isn't important on the server side, but I think it ends up being critial, 
both for gitweb, and simply because I'd expect server side to want to 
verify the projects they export too. So I do think you'd want to have a 
recent git to support recent featurs.

So I think it boils down to: 
 - old git versions will obviously happily continue to  export all normal 
   repositories (including the submodules themselves).
 - but the actual supermodule support for embedding those submodules 
   really is a fundamentally new linkage, and if you want to use 
   supermodules, you have to have a recent enough git. Even if it's just 
   exporting them.
 - with 1.5.2, git will be good enough to _serve_ stuff, even if it might 
   not be very usable for the client-side operations. So especially since 
   there won't be a whole lot of users (due to the client limitations), I 
   think it's fine to expect a "sufficiently capable" git version if you 
   start serving subproject content.

But, yeah, this is just my personal view of sub/superproject support, and 
I've never actually _used_ it myself apart from my small test-repo thing.

		Linus

```

## Andy Parkins, 2007-04-27 18:03

Subject: Re: What's in git.git (stable)
Message-ID: <200704271903.33263.andyparkins@gmail.com>
URL: https://gitlist.dev/e/200704271903.33263.andyparkins%40gmail.com
In-Reply-To: <alpine.LFD.0.98.0704271002310.9964@woody.linux-foundation.org>

```
On Friday 2007, April 27, Linus Torvalds wrote:

> I'm personally really really sure. The whole point of subprojects (at

Fair enough.  I just hadn't seen very much talk about this issue and 
wanted to make sure.

> trouble with the new feature: at a minimum, git-fsck would always
> complain about the invalid mode (and things like "git diff" would too
> - I think it used to just die on unknown modes).

That kind of settles it really - if neither implementation would have 
worked with non-submodule git then the decision must come down to which 
is technically better - and I'm persuaded that the extra layer of 
indirection doesn't actually gain anything other than some extra 
objects to track.

>  - with 1.5.2, git will be good enough to _serve_ stuff, even if it
> might not be very usable for the client-side operations. So

>From my point of view, I don't really mind manually fetching the 
submodules.  I very much appreciate that I don't _have_ to have the 
submodules for the superproject to continue to work.

I was actually surprised how little I'm finding I need submodule support 
in the porcelain.  The only slight problem at the moment is with 
git-checkout; switching from a branch with the supermodule to a branch 
without it and back needs a bit of hoop jumping, but nothing too 
painful.  All in all - success all over.


Andy

-- 
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com

```

## Linus Torvalds, 2007-04-27 18:12

Subject: Re: What's in git.git (stable)
Message-ID: <alpine.LFD.0.98.0704271110330.9964@woody.linux-foundation.org>
URL: https://gitlist.dev/e/alpine.LFD.0.98.0704271110330.9964%40woody.linux-foundation.org
In-Reply-To: <200704271903.33263.andyparkins@gmail.com>

```


On Fri, 27 Apr 2007, Andy Parkins wrote:
> 
> I was actually surprised how little I'm finding I need submodule support 
> in the porcelain.  The only slight problem at the moment is with 
> git-checkout; switching from a branch with the supermodule to a branch 
> without it and back needs a bit of hoop jumping, but nothing too 
> painful.  All in all - success all over.

Heh, good to hear, but I suspect your habits may differ from other 
peoples...

I agree that "git checkout" needs to have that .gitmodules thing. It 
should actually be fairly straightforward, although there are subtle 
issues (ie right now we can *atomically* say "cannot check out, it's 
dirty" - what happens when you've already checked out five subprojects, 
and the sixth one is dirty?).

"git diff --subprojects" is likely also something people will want, and 
that should be _reasonably_ straigtforward.

"git merge" is the big one. 

		Linus

```

## Junio C Hamano, 2007-04-29 18:33

Subject: What's in git.git (stable)
Message-ID: <7v4pmzdo9o.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v4pmzdo9o.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <1177662893872-git-send-email-junkio@cox.net>

```
We would need PerlIO fix for git-svn to handle symlinks on MacOS
properly on 'maint', which is still a known issue.  With that
I'll do a v1.5.1.3.

In addition to a few more new features recently discussed, and
of course a lot of fixes that came in the last couple of days,
I've merged the "give them rope" conversion series to 'master'.
Hopefully we will have a handful user-manual updates from JBF
and git-gui 0.6.6 from Shawn and have v1.5.2-rc1 soon.

* The 'maint' branch has these fixes since the last announcement.

 Adam Roben (1):
  git-svn: Added 'find-rev' command

 Johannes Schindelin (1):
  import-tars: be nice to wrong directory modes

 Josh Triplett (1):
  Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation

 Julian Phillips (1):
  http.c: Fix problem with repeated calls of http_init

 Junio C Hamano (3):
  Do not barf on too long action description
  Update .mailmap with "Michael"
  Fix import-tars fix.

 Michele Ballabio (1):
  git shortlog documentation: add long options and fix a typo

 Shawn O. Pearce (2):
  Don't allow empty pathnames in fast-import
  Catch empty pathnames in trees during fsck


* The 'master' branch has these since the last announcement
  in addition to the above.

 Josh Triplett (1):
  Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

 Junio C Hamano (7):
  Add 'ident' conversion.
  Add 'filter' attribute and external filter driver definition.
  blame -s: suppress author name and time.
  Split out mailmap handling out of shortlog
  Apply mailmap in git-blame output.
  Make macros to prevent double-inclusion in headers consistent.
  Make sure test-genrandom and test-chmtime are builtas part of the main build.

```

## J. Bruce Fields, 2007-04-30 04:15

Subject: Re: What's in git.git (stable)
Message-ID: <20070430041535.GB2694@fieldses.org>
URL: https://gitlist.dev/e/20070430041535.GB2694%40fieldses.org
In-Reply-To: <7v4pmzdo9o.fsf@assigned-by-dhcp.cox.net>

```
On Sun, Apr 29, 2007 at 11:33:07AM -0700, Junio C Hamano wrote:
> Hopefully we will have a handful user-manual updates from JBF
> and git-gui 0.6.6 from Shawn and have v1.5.2-rc1 soon.

Sorry for the relative silence; I've had a busy couple of weeks keeping
me away from git, and a backlog of comments.  I'll try to have a few
things ready tommorow (Monday) night, but nothing earth-shattering.--b.

```

## Junio C Hamano, 2007-04-30 05:12

Subject: Re: What's in git.git (stable)
Message-ID: <7virbecunp.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7virbecunp.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070430041535.GB2694@fieldses.org>

```
"J. Bruce Fields" <bfields@fieldses.org> writes:

> On Sun, Apr 29, 2007 at 11:33:07AM -0700, Junio C Hamano wrote:
>> Hopefully we will have a handful user-manual updates from JBF
>> and git-gui 0.6.6 from Shawn and have v1.5.2-rc1 soon.
>
> Sorry for the relative silence; I've had a busy couple of weeks keeping
> me away from git, and a backlog of comments.  I'll try to have a few
> things ready tommorow (Monday) night, but nothing earth-shattering.--b.

Thanks, and absolutely no reason to say sorry.  This is a
collective volunteer effort and I believe your effort on the
user's manual so far has already made git much more approachable
to new people.  It's greatly appreciated.

Besides, I made it sound as if -rc1 will be blocked, *waiting*
for these two updates, but it was a mistake; it doesn't have to
wait and documentation updates and polishes can happen anytime
before the final.

And contribution from others on the list, especially from people
with some git virginity still left, to review the user's manual
would be valuable.

```

## J. Bruce Fields, 2007-05-01 03:36

Subject: Re: What's in git.git (stable)
Message-ID: <20070501033634.GC21774@fieldses.org>
URL: https://gitlist.dev/e/20070501033634.GC21774%40fieldses.org
In-Reply-To: <7virbecunp.fsf@assigned-by-dhcp.cox.net>

```
On Sun, Apr 29, 2007 at 10:12:42PM -0700, Junio C Hamano wrote:
> Thanks, and absolutely no reason to say sorry.  This is a
> collective volunteer effort and I believe your effort on the
> user's manual so far has already made git much more approachable
> to new people.  It's greatly appreciated.
> 
> Besides, I made it sound as if -rc1 will be blocked, *waiting*
> for these two updates, but it was a mistake; it doesn't have to
> wait and documentation updates and polishes can happen anytime
> before the final.

OK!  I will get back to it soon....

> And contribution from others on the list, especially from people
> with some git virginity still left, to review the user's manual
> would be valuable.

Yep.--b.

```

## Junio C Hamano, 2007-05-06 08:53

Subject: What's in git.git (stable)
Message-ID: <7vejlucozk.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vejlucozk.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <7v4pmzdo9o.fsf@assigned-by-dhcp.cox.net>

```
Master is at v1.5.2-rc2; maint is probably ready to produce
v1.5.1.4, but not tonight.

Here are two draft release notes, followed by the usual "What's in"
summaries.

----------------------------------------------------------------

GIT v1.5.1.4 Release Notes (draft)
==========================

Fixes since v1.5.1.3
--------------------

* Bugfixes

  - "git-http-fetch" did not work around a bug in libcurl
    earlier than 7.16 (curl_multi_remove_handle() was broken).

  - "git cvsserver" handles a file that was once removed and
    then added again correctly.

  - import-tars script (in contrib/) handles GNU tar archives
    that contain pathnames longer than 100 bytes (long-link
    extension) correctly.

  - xdelta test program did not build correctly.

  - gitweb sometimes tried incorrectly to apply function to
    decode utf8 twice, resulting in corrupt output.

  - "git blame -C" mishandled text at the end of a group of
    lines.

  - "git log/rev-list --boundary" did not produce output
    correctly without --left-right option.

----------------------------------------------------------------

GIT v1.5.2 Release Notes (draft)
========================

Updates since v1.5.1
--------------------

* Plumbing level subproject support.

  You can include a subdirectory that has an independent git
  repository in your index and tree objects as a
  "subproject".  This plumbing (i.e. "core") level subproject
  support explicitly excludes recursive behaviour.

  The "subproject" entries in the index and trees are
  incompatible with older versions of git.  Experimenting with
  the plumbing level support is encouraged, but be warned that
  unless everybody in your project updates to this release or
  later, using this feature would make your project
  inaccessible by people with older versions of git.

* Plumbing level gitattributes support.

  The gitattributes mechanism allows you to add 'attributes' to
  paths in your project, and affect the way certain git
  operations work.  Currently you can influence if a path is
  considered a binary or text (the former would be treated by
  'git diff' not to produce textual output; the latter can go
  through the line endings conversion process in repositories
  with core.autocrlf set), expand and unexpand '$ident$' keyword
  with blob object name, specify a custom 3-way merge driver,
  and specify a custom diff driver.  You can also apply
  arbitrary filter to contents on check-in/check-out codepath
  but this feature is an extremely sharp-edged razor and needs
  to be handled with caution (do not use it unless you
  understand the earlier mailing list discussion on keyward
  expansion).

* The packfile format now optionally suports 64-bit index.

  This release supports the "version 2" format of the .idx
  file.  This is automatically enabled when a huge packfile
  needs more than 32-bit to express offsets of objects in the
  pack

* New commands and options.

  - "git bisect start" can optionally take a single bad commit and
    zero or more good commits on the command line.

  - "git shortlog" can optionally be told to wrap its output.

  - "subtree" merge strategy allows another project to be merged in as
    your subdirectory.

  - "git format-patch" learned a new --subject-prefix=<string>
    option, to override the built-in "[PATCH]".

  - "git add -u" is a quick way to do the first stage of "git
    commit -a" (i.e. update the index to match the working
    tree); it obviously does not make a commit.

  - "git clean" honors a new configuration, "clean.requireforce".  When
    set to true, this makes "git clean" a no-op, preventing you
    from losing files by typing "git clean" when you meant to
    say "make clean".  You can still say "git clean -f" to
    override this.

  - "git log" family of commands learned --date={local,relative,default}
    option.  --date=relative is synonym to the --relative-date.
    --date=local gives the timestamp in local timezone.

* Updated behavior of existing commands.

  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
    but $EMAIL is set, the latter is used as a substitute.

  - "git diff --stat" shows size of preimage and postimage blobs
    for binary contents.  Earlier it only said "Bin".

  - "git lost-found" shows stuff that are unreachable except
    from reflogs.

  - "git checkout branch^0" now detaches HEAD at the tip commit
    on the named branch, instead of just switching to the
    branch (use "git checkout branch" to switch to the branch,
    as before).

  - "git bisect next" can be used after giving only a bad commit
    without giving a good one (this starts bisection half-way to
    the root commit).  We used to refuse to operate without a
    good and a bad commit.

  - "git push", when pushing into more than one repository, does
    not stop at the first error.

  - "git archive" does not insist you to give --format parameter
    anymore; it defaults to "tar".

  - "git cvsserver" can use backends other than sqlite.

  - "gitview" (in contrib/ section) learned to better support
    "git-annotate".

  - "git diff $commit1:$path2 $commit2:$path2" can now report
    mode changes between the two blobs.

  - Local "git fetch" from a repository whose object store is
    one of the alternates (e.g. fetching from the origin in a
    repository created with "git clone -l -s") avoids
    downloading objects unnecessary.

  - "git blame" uses .mailmap to canonicalize the author name
    just like "git shortlog" does.

* Builds

  - git-p4import has never been installed; now there is an
    installation option to do so.

  - gitk and git-gui can be configured out.

  - Generated documentation pages automatically get version
    information from GIT_VERSION

  - Parallel build with "make -j" descending into subdirectory
    was fixed.

* Performance Tweaks

  - Optimized "git-rev-list --bisect" (hence "git-bisect").

  - Optimized "git-add $path" in a large directory, most of
    whose contents are ignored.

  - The recursive merge strategy updated a worktree file that
    was changed identically in two branches, when one of them
    renamed it.  We do not do that when there is no rename, so
    match that behaviour.

Fixes since v1.5.1
------------------

All of the fixes in v1.5.1 maintenance series are included in
this release, unless otherwise noted.

* Bugfixes

  - Switching branches with "git checkout" refused to work when
    a path changes from a file to a directory between the
    current branch and the new branch, in order not to lose
    possible local changes in the directory that is being turned
    into a file with the switch.  We now allow such a branch
    switch after making sure that there is no locally modified
    file nor un-ignored file in the directory.  This has not
    been backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - Merging branches that have a file in one and a directory in
    another at the same path used to get quite confused.  We
    handle such a case a bit more carefully, even though that is
    still left as a conflict for the user to sort out.  This
    will not be backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - git-fetch had trouble with a remote with insanely large number
    of refs.

  [[[jc: I'll probably copy&paste v1.5.1.X release notes here, or
  refer readers to those separate documents.  I haven't decided
  which way I would go, but I am inclined to do the latter.]]]

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last announcement.

 Alex Riesen (1):
  Small correction in reading of commit headers

 Alexandre Julliard (1):
  http-fetch: Disable use of curl multi support for libcurl < 7.16.

 Arjen Laarhoven (1):
  Document 'opendiff' value in config.txt and git-mergetool.txt

 Bryan Larsen (2):
  Allow PERL_PATH="/usr/bin/env perl"
  posix compatibility for t4200

 Carl Worth (1):
  Mention version 1.5.1 in tutorial and user-manual

 Daniel Barkalow (1):
  Make xstrndup common

 Frank Lichtenheld (1):
  cvsserver: Handle re-added files correctly

 Ismail Dönmez (1):
  gitweb: use decode_utf8 directly

 Jakub Narebski (1):
  diff format documentation: describe raw combined diff format

 James Bowes (1):
  Documentation: fix typo in git-remote.txt

 Johannes Schindelin (1):
  Teach import-tars about GNU tar's @LongLink extension.

 Junio C Hamano (4):
  diff.c: fix "size cache" handling.
  blame: Notice a wholesale incorporation of an existing file.
  blame: -C -C -C
  Add test for blame corner cases.

 Karl Hasselström (2):
  Fix markup in git-svn man page
  Add --no-rebase option to git-svn dcommit

 Linus Torvalds (1):
  Fix --boundary output

 Martin Koegler (1):
  Fix compilation of test-delta


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (1):
  Handle return code of parse_commit in revision machinery

 Dana L. How (1):
  Create pack-write.c for common pack writing code

 Jonas Fonseca (1):
  git-tag(1): -v option is a subcommand; fix code block

 Junio C Hamano (2):
  blame: use .mailmap unconditionally
  GIT v1.5.2-rc2

 Shawn O. Pearce (3):
  Reuse fixup_pack_header_footer in index-pack
  Don't use seq in tests, not everyone has it
  Improve request-pull to handle non-rebased branches

```

## Jakub Narebski, 2007-05-07 00:59

Subject: Re: What's in git.git (stable)
Message-ID: <f1ltdu$p1u$1@sea.gmane.org>
URL: https://gitlist.dev/e/f1ltdu%24p1u%241%40sea.gmane.org
In-Reply-To: <7vejlucozk.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano wrote:

>   - "git diff $commit1:$path2 $commit2:$path2" can now report
>     mode changes between the two blobs.

I think that actually it is enough to have $tree1:$path1 $tree2:$path2
(and it should be $commit1:$path1 not $path2 nevertheless).

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

```

## Frank Lichtenheld, 2007-05-07 13:33

Subject: Re: What's in git.git (stable)
Message-ID: <20070507133312.GH30324@planck.djpig.de>
URL: https://gitlist.dev/e/20070507133312.GH30324%40planck.djpig.de
In-Reply-To: <7vejlucozk.fsf@assigned-by-dhcp.cox.net>

```
On Sun, May 06, 2007 at 01:53:19AM -0700, Junio C Hamano wrote:
> GIT v1.5.2 Release Notes (draft)
> ========================
[...]
>   to be handled with caution (do not use it unless you
>   understand the earlier mailing list discussion on keyward
>   expansion).

I guess that should be "keyword"

Gruesse,
-- 
Frank Lichtenheld <frank@lichtenheld.de>
www: http://www.djpig.de/

```
