What's cooking in git.git (Aug 2009, #04; Sun, 23)

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

What's cooking in git.git (Aug 2009, #04; Sun, 23)

Junio C Hamano
Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

After the 1.6.5 cycle, the next release will be 1.7.0, and we will push
out the planned "push safety" change.  1.7.0 would be a good time to
introduce "justifiable" changes that are not strictly backward compatible.

During 1.6.5 cycle, 'next' will hold topics meant for 1.6.5 and 1.7.0.

--------------------------------------------------
[Graduated to "master"]

* bc/mailsplit-cr-at-eol (2009-08-04) 4 commits
  (merged to 'next' on 2009-08-06 at 6bc7c5c)
 + Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
 + builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
 + builtin-mailinfo,builtin-mailsplit: use strbufs
 + strbuf: add new function strbuf_getwholeline()

* gb/apply-ignore-whitespace (2009-08-04) 1 commit
  (merged to 'next' on 2009-08-06 at 59e2c86)
 + git apply: option to ignore whitespace differences

* cc/replace (2009-05-27) 14 commits.
  (merged to 'next' on 2009-08-02 at b9c4bc0)
 + t6050: check pushing something based on a replaced commit
 + Documentation: add documentation for "git replace"
 + Add git-replace to .gitignore
 + builtin-replace: use "usage_msg_opt" to give better error messages
 + parse-options: add new function "usage_msg_opt"
 + builtin-replace: teach "git replace" to actually replace
 + Add new "git replace" command
 + environment: add global variable to disable replacement
 + mktag: call "check_sha1_signature" with the replacement sha1
 + replace_object: add a test case
 + object: call "check_sha1_signature" with the replacement sha1
 + sha1_file: add a "read_sha1_file_repl" function
 + replace_object: add mechanism to replace objects found in "refs/replace/"
 + refs: add a "for_each_replace_ref" function

* ld/p4 (2009-07-30) 1 commit
  (merged to 'next' on 2009-08-14 at 36d310d)
 + git-p4: stream from perforce to speed up clones

* mr/gitweb-xz (2009-08-06) 3 commits
  (merged to 'next' on 2009-08-14 at b63b8e6)
 + gitweb: add support for XZ compressed snapshots
 + gitweb: update INSTALL regarding specific snapshot settings
 + gitweb: support to globally disable a snapshot format

* jc/verify-pack-stat (2009-08-07) 1 commit
  (merged to 'next' on 2009-08-10 at f80d0e9)
 + verify-pack --stat-only: show histogram without verifying
--------------------------------------------------
[New Topics]

* jc/mailinfo-scissors (2009-08-23) 1 commit
 - Teach mailinfo to ignore everything before -- >8 -- mark

* tf/diff-whitespace-incomplete-line (2009-08-23) 2 commits.
 - xutils: Fix xdl_recmatch() on incomplete lines
 - xutils: Fix hashing an incomplete line with whitespaces at the end

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit
  (merged to 'next' on 2009-08-22 at 5106de8)
 + send-email: make --no-chain-reply-to the default

* lt/approxidate (2009-08-22) 2 commits
 - Further 'approxidate' improvements
 - Improve on 'approxidate'

* mm/reset-report (2009-08-21) 2 commits
 - reset: make the reminder output consistent with "checkout"
 - Rename REFRESH_SAY_CHANGED to REFRESH_IN_PORCELAIN.

* wl/insta-mongoose (2009-08-21) 1 commit
 - Add support for the Mongoose web server.
--------------------------------------------------
[Stalled]

* sr/gfi-options (2009-08-13) 3 commits
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: put option parsing code in seperate functions

What is this used by?

* lt/block-sha1 (2009-08-17) 4 commits
  (merged to 'next' on 2009-08-18 at 67a1ce8)
 + remove ARM and Mozilla SHA1 implementations
 + block-sha1: guard gcc extensions with __GNUC__
 + make sure byte swapping is optimal for git
 + block-sha1: make the size member first in the context struct

Finishing touches ;-)  There were a few Solaris portability patches
floated around that I didn't pick up, waiting for them to finalize.

* js/stash-dwim (2009-07-27) 1 commit.
  (merged to 'next' on 2009-08-16 at 67896c4)
 + Make 'git stash -k' a short form for 'git stash save --keep-index'
 (this branch is used by tr/reset-checkout-patch.)

* tr/reset-checkout-patch (2009-08-18) 8 commits.
  (merged to 'next' on 2009-08-18 at e465bb3)
 + tests: disable interactive hunk selection tests if perl is not available
  (merged to 'next' on 2009-08-16 at 67896c4)
 + DWIM 'git stash save -p' for 'git stash -p'
 + Implement 'git stash save --patch'
 + Implement 'git checkout --patch'
 + Implement 'git reset --patch'
 + builtin-add: refactor the meat of interactive_add()
 + Add a small patch-mode testing library
 + git-apply--interactive: Refactor patch mode code
 (this branch uses js/stash-dwim.)

There was a discussion on better DWIMmery for the above two topics to (1)
forbid "git stash save --anything-with-dash" and (2) redirect with any
option "git stash --opt" to "git stash save --opt", to keep it flexible
and safe at the same time.  I think it is a sane thing to do, but nothing
has happened lately.

* jn/gitweb-blame (2009-08-06) 3 commits
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
 - gitweb: Incremental blame (WIP)
 - gitweb: Add optional "time to generate page" info in footer

Ajax-y blame WIP

* db/vcs-helper (2009-08-09) 17 commits
 - Allow helpers to request marks for fast-import
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - transport-helper_init(): fix a memory leak in error path
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Use a clearer style to issue commands to remote helpers
  (merged to 'next' on 2009-08-07 at f3533ba)
 + Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible
 + Makefile: do not link three copies of git-remote-* programs
 + Makefile: git-http-fetch does not need expat
  (merged to 'next' on 2009-08-06 at 15da79d)
 + http-fetch: Fix Makefile dependancies
 + Add transport native helper executables to .gitignore
  (merged to 'next' on 2009-08-05 at 33d491e)
 + git-http-fetch: not a builtin
 + Use an external program to implement fetching with curl
 + Add support for external programs for handling native fetches
 (this branch is used by jh/cvs-helper.)

There was a discussion that suggests that the use of colon ':' before vcs
helper name needs to be corrected.  Nothing happened since.

* je/send-email-no-subject (2009-08-05) 1 commit
 - send-email: confirm on empty mail subjects

This seems to break t9001.  Near the tip of 'pu' I have a iffy
workaround.

--------------------------------------------------
[Cooking]

* cc/sequencer-rebase-i (2009-08-21) 17 commits.
 - rebase -i: use "git sequencer--helper --cherry-pick"
 - sequencer: add "--cherry-pick" option to "git sequencer--helper"
 - sequencer: add "do_commit()" and related functions
 - pick: libify "pick_help_msg()"
 - revert: libify pick
 - rebase -i: use "git sequencer--helper --fast-forward"
 - sequencer: let "git sequencer--helper" callers set "allow_dirty"
 - sequencer: add "--fast-forward" option to "git sequencer--helper"
 - sequencer: add "do_fast_forward()" to perform a fast forward
 - rebase -i: use "git sequencer--helper --reset-hard"
 - sequencer: add "--reset-hard" option to "git sequencer--helper"
 - sequencer: add comments about reset_almost_hard()
 - sequencer: add "reset_almost_hard()" and related functions
 - rebase -i: use "git sequencer--helper --make-patch"
 - sequencer: free memory used in "make_patch" function
 - sequencer: add "make_patch" function to save a patch
 - sequencer: add "builtin-sequencer--helper.c"

Migrating "rebase -i" bit by bit to C.  I am inclined to agree with Dscho
that maybe this approach forces the migration to follow the structure of
the shell script too much, and could force a suboptimal end result, but
we'll see.

* aj/fix-read-tree-from-scratch (2009-08-17) 1 commit
  (merged to 'next' on 2009-08-20 at 7a04133)
 + read-tree: Fix regression with creation of a new index file.

Will merge.

* as/maint-graph-interesting-fix (2009-08-18) 1 commit.
 - graph API: fix bug in graph_is_interesting()

I need to queue the associated test after getting it signed-off.

* jc/1.7.0-status (2009-08-15) 3 commits
  (merged to 'next' on 2009-08-22 at b3507bb)
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch uses jc/shortstatus.)

As promised, I squashed incremental "fix-up" into the commits they fix;
this will be kept in 'next' until 1.7.0

* jc/shortstatus (2009-08-15) 11 commits
  (merged to 'next' on 2009-08-15 at 7e40766)
 + git commit --dry-run -v: show diff in color when asked
 + Documentation/git-commit.txt: describe --dry-run
  (merged to 'next' on 2009-08-12 at 53bda17)
 + wt-status: collect untracked files in a separate "collect" phase
 + Make git_status_config() file scope static to builtin-commit.c
 + wt-status: move wt_status_colors[] into wt_status structure
 + wt-status: move many global settings to wt_status structure
 + commit: --dry-run
  (merged to 'next' on 2009-08-06 at fe8cb94)
 + status: show worktree status of conflicted paths separately
 + wt-status.c: rework the way changes to the index and work tree are summarized
 + diff-index: keep the original index intact
 + diff-index: report unmerged new entries
 (this branch is used by jc/1.7.0-status.)

Will cook for a bit more and then merge.

* jc/maint-checkout-index-to-prefix (2009-08-16) 1 commit
  (merged to 'next' on 2009-08-20 at 2f6aea2)
 + check_path(): allow symlinked directories to checkout-index --prefix

Will merge.

* jc/maint-unpack-objects-strict (2009-08-13) 1 commit.
  (merged to 'next' on 2009-08-23 at 38eb750)
 + Fix "unpack-objects --strict"

* jh/submodule-foreach (2009-08-20) 9 commits
  (merged to 'next' on 2009-08-20 at 671bea4)
 + git clone: Add --recursive to automatically checkout (nested) submodules
 + t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
  (merged to 'next' on 2009-08-18 at f4a881d)
 + git submodule status: Add --recursive to recurse into nested submodules
 + git submodule update: Introduce --recursive to update nested submodules
 + git submodule foreach: Add --recursive to recurse into nested submodules
 + git submodule foreach: test access to submodule name as '$name'
 + Add selftest for 'git submodule foreach'
 + git submodule: Cleanup usage string and add option parsing to cmd_foreach()
 + git submodule foreach: Provide access to submodule name, as '$name'

* jl/submodule-summary-diff-files (2009-08-15) 2 commits
  (merged to 'next' on 2009-08-15 at 165bd8e)
 + Documentaqtion/git-submodule.txt: Typofix
  (merged to 'next' on 2009-08-14 at a702e78)
 + git submodule summary: add --files option

Will merge.

* lh/short-decorate (2009-08-15) 1 commit
  (merged to 'next' on 2009-08-18 at b8c1d96)
 + git-log: allow --decorate[=short|full]

Will merge.

* oa/stash-na (2009-08-11) 1 commit
  (merged to 'next' on 2009-08-14 at 12c2e2b)
 + git stash: Give friendlier errors when there is nothing to apply

Will merge.

* jh/notes (2009-07-29) 8 commits.
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - First draft of notes tree parser with support for fanout subtrees
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

The cvs-helper series depends on this one.

* ne/rev-cache (2009-08-21) 6 commits
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

Updated but seems to break tests when merged to 'pu'; didn't look at the
issue deeply.

* jh/cvs-helper (2009-08-18) 7 commits
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 (this branch uses db/vcs-helper.)

Builds on db/vcs-helper.  The testing of Python part seemed to be
still fragile even with the latest fix on one of my boches with an
earlier round already installed, but I didn't look very deeply before
removing the older installation.

* nd/sparse (2009-08-20) 20 commits
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options
  (merged to 'next' on 2009-08-20 at ea167d7)
 + Prevent diff machinery from examining assume-unchanged entries on worktree

The first one was an independent fix; the rest has been replaced with the
"return of no-checkout" series.

* jc/1.7.0-diff-whitespace-only-status (2009-05-23) 2 commits.
  (merged to 'next' on 2009-08-02 at 9c08420)
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

For 1.7.0.  This changes exit code from "git diff --ignore-whitespace" and
friends when there is no actual output.  It is a backward incompatible
change, but we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits
  (merged to 'next' on 2009-08-02 at 38b82fe)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

For 1.7.0.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker
--------------------------------------------------
[I have been too busy to purge these]

* ar/maint-1.6.2-merge-recursive-d-f (2009-05-11) 2 commits.
 . Fix for a merge where a branch has an F->D transition
 . Add a reminder test case for a merge with F/D transition

* jc/merge-convert (2009-01-26) 1 commit.
 . git-merge-file: allow converting the results for the work tree

* lt/read-directory (2009-05-15) 3 commits.
 . Add initial support for pathname conversion to UTF-8
 . read_directory(): infrastructure for pathname character set conversion
 . Add 'fill_directory()' helper function for directory traversal

* ps/blame (2009-03-12) 1 commit.
 . blame.c: start libifying the blame infrastructure

* pb/tracking (2009-07-16) 7 commits.
 . branch.c: if remote is not config'd for branch, don't try delete push config
 . branch, checkout: introduce autosetuppush
 . move deletion of merge configuration to branch.c
 . remote: add per-remote autosetupmerge and autosetuprebase configuration
 . introduce a struct tracking_config
 . branch: install_branch_config and struct tracking refactoring
 . config: allow false and true values for branch.autosetuprebase

Has been ejected from 'pu' for some time, expecting a reroll.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Nicolas Pitre
On Sun, 23 Aug 2009, Junio C Hamano wrote:

> * lt/block-sha1 (2009-08-17) 4 commits
>   (merged to 'next' on 2009-08-18 at 67a1ce8)
>  + remove ARM and Mozilla SHA1 implementations
>  + block-sha1: guard gcc extensions with __GNUC__
>  + make sure byte swapping is optimal for git
>  + block-sha1: make the size member first in the context struct
>
> Finishing touches ;-)  There were a few Solaris portability patches
> floated around that I didn't pick up, waiting for them to finalize.

Those would be described better as Solaris _optimization_ patches.  The
code is already fully portable as it is, except not necessarily optimal
in some cases.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

sr/gfi-options, was Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Johannes Schindelin
In reply to this post by Junio C Hamano
Hi,

On Sun, 23 Aug 2009, Junio C Hamano wrote:

> * sr/gfi-options (2009-08-13) 3 commits
>  - fast-import: test the new option command
>  - fast-import: add option command
>  - fast-import: put option parsing code in seperate functions
>
> What is this used by?

By a hg-fast-import Sverre was writing for me:

http://github.com/SRabbelier/hg-git/tree/fast-export

Sverre hinted at the possibility of ripping this out of hg-git and putting
it into a hg:// helper.

Ciao,
Dscho

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Johan Herland
In reply to this post by Junio C Hamano
On Monday 24 August 2009, Junio C Hamano wrote:
> * sr/gfi-options (2009-08-13) 3 commits
>  - fast-import: test the new option command
>  - fast-import: add option command
>  - fast-import: put option parsing code in seperate functions
>
> What is this used by?

I'm planning to use it in the CVS remote helper, as a somewhat cleaner
replacement of this one:

> * db/vcs-helper (2009-08-09) 17 commits
>  - Allow helpers to request marks for fast-import

In other words, I need one or the other, and I currently find the
gfi-options solution somewhat more elegant than adding the 'marks
<filename>' command to the foreign remote API.


Have fun! :)

...Johan

--
Johan Herland, <[hidden email]>
www.herland.net
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Adam Simpkins-2
In reply to this post by Junio C Hamano
On Sun, Aug 23, 2009 at 06:01:50PM -0700, Junio C Hamano wrote:
>
> * as/maint-graph-interesting-fix (2009-08-18) 1 commit.
>  - graph API: fix bug in graph_is_interesting()
>
> I need to queue the associated test after getting it signed-off.

Whoops.  Sorry about that.

Signed-off-by: Adam Simpkins <[hidden email]>

--
Adam Simpkins
[hidden email]
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: sr/gfi-options, was Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Sverre Rabbelier-2
In reply to this post by Johannes Schindelin
Heya,

On Mon, Aug 24, 2009 at 07:45, Johannes
Schindelin<[hidden email]> wrote:
> On Sun, 23 Aug 2009, Junio C Hamano wrote:
>> * sr/gfi-options (2009-08-13) 3 commits
>>  - fast-import: test the new option command
>>  - fast-import: add option command
>>  - fast-import: put option parsing code in seperate functions
>>
>> What is this used by?
>
> By a hg-fast-import Sverre was writing for me:

And possibly also by the p4 helper I think?

> Sverre hinted at the possibility of ripping this out of hg-git and putting
> it into a hg:// helper.

I don't know if I have time for that this week, but it's at the top of
my todo list :).

--
Cheers,

Sverre Rabbelier
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: sr/gfi-options, was Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Daniel Barkalow
On Mon, 24 Aug 2009, Sverre Rabbelier wrote:

> Heya,
>
> On Mon, Aug 24, 2009 at 07:45, Johannes
> Schindelin<[hidden email]> wrote:
> > On Sun, 23 Aug 2009, Junio C Hamano wrote:
> >> * sr/gfi-options (2009-08-13) 3 commits
> >>  - fast-import: test the new option command
> >>  - fast-import: add option command
> >>  - fast-import: put option parsing code in seperate functions
> >>
> >> What is this used by?
> >
> > By a hg-fast-import Sverre was writing for me:
>
> And possibly also by the p4 helper I think?
Nope, I didn't actually need it. I think the cvs helper wants it, though,
since that is using the marks file.

        -Daniel
*This .sig left intentionally blank*
Reply | Threaded
Open this post in threaded view
|

Re: sr/gfi-options, was Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Sverre Rabbelier-2
Heya,

On Mon, Aug 24, 2009 at 12:09, Daniel Barkalow<[hidden email]> wrote:
> Nope, I didn't actually need it. I think the cvs helper wants it, though,
> since that is using the marks file.

Ah, that's right, the p4 helper uses a python script (like mine), and
the cvs helper uses a marks file (like mine). I got the two confused
:).

--
Cheers,

Sverre Rabbelier
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Brandon Casey-3
In reply to this post by Nicolas Pitre
Nicolas Pitre wrote:

> On Sun, 23 Aug 2009, Junio C Hamano wrote:
>
>> * lt/block-sha1 (2009-08-17) 4 commits
>>   (merged to 'next' on 2009-08-18 at 67a1ce8)
>>  + remove ARM and Mozilla SHA1 implementations
>>  + block-sha1: guard gcc extensions with __GNUC__
>>  + make sure byte swapping is optimal for git
>>  + block-sha1: make the size member first in the context struct
>>
>> Finishing touches ;-)  There were a few Solaris portability patches
>> floated around that I didn't pick up, waiting for them to finalize.
>
> Those would be described better as Solaris _optimization_ patches.  The
> code is already fully portable as it is, except not necessarily optimal
> in some cases.

Nicolas is right, the code compiles and executes correctly on Solaris as-is.

Here is the state of the two unsubmitted optimization patches:

  1) Change things like __i386__ to __i386 since GCC defines both, but
     SUNWspro only defines __i386.

     This works correctly in my testing.  I'm assuming that a test for
     __amd64 is not necessary and expect that __x86_64 is set whenever
     __amd64 is set.

  2) Set __GNUC__ on SUNWspro v5.10 and up.

     This compiles correctly and passes the test suite, but produces
     warnings for __attribute__'s that sun's compiler has not implemented.
     This produces a very noisy compile.

I've wanted to do some performance testing to see whether this actually
produces an _improvement_.  I'll try today.

-brandon
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Junio C Hamano
Brandon Casey <[hidden email]> writes:

> Nicolas is right, the code compiles and executes correctly on Solaris as-is.
>
> Here is the state of the two unsubmitted optimization patches:
>
>   1) Change things like __i386__ to __i386 since GCC defines both, but
>      SUNWspro only defines __i386.
>
>      This works correctly in my testing.  I'm assuming that a test for
>      __amd64 is not necessary and expect that __x86_64 is set whenever
>      __amd64 is set.
>
>   2) Set __GNUC__ on SUNWspro v5.10 and up.
>
>      This compiles correctly and passes the test suite, but produces
>      warnings for __attribute__'s that sun's compiler has not implemented.
>      This produces a very noisy compile.
>
> I've wanted to do some performance testing to see whether this actually
> produces an _improvement_.  I'll try today.

Thanks.

I agree (1) would be a reasonable thing to do.

(2) feels very iffy/hacky.  As far as I can see, by defining __GNUC__,
Solaris would also use builtin-alloca in compat/regex/regex.c, which may
or may not be what you want.

It might be cleaner to do:

        #if __GNUC__ || SUNWspro > 5.10
        #define GCC_LIKE_INLINE_ASM
        #define GCC_LIKE_STMT_EXPR
        #endif

and use them, instead of __GNUC__, to enable the inline assembly used in
the block sha1 codepath.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Brandon Casey-3
Junio C Hamano wrote:

> Brandon Casey <[hidden email]> writes:
>
>> Nicolas is right, the code compiles and executes correctly on Solaris as-is.
>>
>> Here is the state of the two unsubmitted optimization patches:
>>
>>   1) Change things like __i386__ to __i386 since GCC defines both, but
>>      SUNWspro only defines __i386.
>>
>>      This works correctly in my testing.  I'm assuming that a test for
>>      __amd64 is not necessary and expect that __x86_64 is set whenever
>>      __amd64 is set.
>>
>>   2) Set __GNUC__ on SUNWspro v5.10 and up.
>>
>>      This compiles correctly and passes the test suite, but produces
>>      warnings for __attribute__'s that sun's compiler has not implemented.
>>      This produces a very noisy compile.
>>
>> I've wanted to do some performance testing to see whether this actually
>> produces an _improvement_.  I'll try today.
>
> Thanks.
>
> I agree (1) would be a reasonable thing to do.
>
> (2) feels very iffy/hacky.  As far as I can see, by defining __GNUC__,
> Solaris would also use builtin-alloca in compat/regex/regex.c, which may
> or may not be what you want.
>
> It might be cleaner to do:
>
> #if __GNUC__ || SUNWspro > 5.10
>         #define GCC_LIKE_INLINE_ASM
>         #define GCC_LIKE_STMT_EXPR
>         #endif
>
> and use them, instead of __GNUC__, to enable the inline assembly used in
> the block sha1 codepath.

Yes, this sounds saner, but alas it will have to be tomorrow...

-brandon


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: What's cooking in git.git (Aug 2009, #04; Sun, 23)

Brandon Casey-3
In reply to this post by Brandon Casey-3
Brandon Casey wrote:

> Nicolas Pitre wrote:
>> On Sun, 23 Aug 2009, Junio C Hamano wrote:
>>
>>> * lt/block-sha1 (2009-08-17) 4 commits
>>>   (merged to 'next' on 2009-08-18 at 67a1ce8)
>>>  + remove ARM and Mozilla SHA1 implementations
>>>  + block-sha1: guard gcc extensions with __GNUC__
>>>  + make sure byte swapping is optimal for git
>>>  + block-sha1: make the size member first in the context struct
>>>
>>> Finishing touches ;-)  There were a few Solaris portability patches
>>> floated around that I didn't pick up, waiting for them to finalize.
>> Those would be described better as Solaris _optimization_ patches.  The
>> code is already fully portable as it is, except not necessarily optimal
>> in some cases.
>
> Nicolas is right, the code compiles and executes correctly on Solaris as-is.
>
> Here is the state of the two unsubmitted optimization patches:
>
>   1) Change things like __i386__ to __i386 since GCC defines both, but
>      SUNWspro only defines __i386.
>
>      This works correctly in my testing.  I'm assuming that a test for
>      __amd64 is not necessary and expect that __x86_64 is set whenever
>      __amd64 is set.
>
>   2) Set __GNUC__ on SUNWspro v5.10 and up.
>
>      This compiles correctly and passes the test suite, but produces
>      warnings for __attribute__'s that sun's compiler has not implemented.
>      This produces a very noisy compile.
>
> I've wanted to do some performance testing to see whether this actually
> produces an _improvement_.  I'll try today.

Ok, I've done some testing.

I've compiled on two Solaris 5.10 x86 boxes.  One has Sun compiler 5.10,
the other has version 5.8.  The 5.10 version supports GCC inline assembler,
statement expressions, and __builtin_x functions.  I timed how long
'git fsck --full HEAD' took on the git repository (best of three runs at
each stage).

It seems that #1 provides almost 1% improvement when using Sun compiler
v5.10, but a 2.5% regression on compiler v5.8.  #2 (implemented using
Junio's suggestion, not by setting __GNUC__), which additionally enables
the fast htonl/ntohl and the rol/ror assembly in block-sha1 when using
the v5.10 compiler, produces a performance regression.  I tried compiling
with '-fast -native', and also with just '-O', and both were slower with
the addition of part #2.

If this is the only data point for non-GNU compilers on x86, and since
there was only <1% improvement with the v5.10 compiler, I'm inclined
to say that we leave the series as it is and don't apply either change.

-brandon

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html