FW: FeatureRequest: Build improvements for Windows

2015-07-26 Thread Dangling Pointer
Hmm, it is already happening, isn't it? There is already a support of MSVCR in 
git's code base. I am referring to replacing that current support of 'older' 
MSVCR in favor of the latest one, so to make the git's code base comparatively 
coherent and organized (as some/many instances of #ifdef _MSC_VER and #if 
define (_MSC_VER)  _MSC_VER  xxx etc. will be gone, for instance we don't 
need fallback for sprint or snprintf since C99 std support for those is 
provisioned).



 
 From: jacob.kel...@gmail.com
 Date: Sun, 26 Jul 2015 00:15:10 -0700
 Subject: Re: FeatureRequest: Build improvements for Windows
 To: danglingpoin...@outlook.com
 CC: git@vger.kernel.org

 On Sat, Jul 25, 2015 at 11:23 PM, Dangling Pointer
 danglingpoin...@outlook.com wrote:
 Hello,

 In my understanding, the ratio between the mere consumers of git on Windows 
 vs. people who compile git for Windows is 100,000 : 1. If there is a 
 breaking change in the workflow of the latter set, who use Visual Studio to 
 build git from source, I assume that is doable given a good reason, hence 
 this post.

 With VS 2015, C99 support is finally added with some C11 features as 
 well. See this blog: 
 http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx.
  One of the edition of new VS is Community edition, which is like 
 professional edition but is free (also much superior than Express edition) 
 and meant for open source projects. VS2015 also has the ability to target 
 compiler for Wind-XP.


 I think the big issue is whether it has support for the various unix
 interfaces and unix shell commands we use. MinGW/MSYS comes with
 support for the unix interface, which I don't believe is that actually
 supported via MSYS and I don't know if VS2015 is supported? I don't
 think it's due to the C99 but due to need of posix interface which is
 not normally (fully) provided by Windows.

 Regards,
 Jake   --
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: FeatureRequest: Build improvements for Windows

2015-07-26 Thread Philip Oakley

(In-line posting preferred; top-posting deprecated ;-)
(retain all cc's)

Hmm, it is already happening, isn't it? There is already a support of 
MSVCR in git's code base. I am referring to replacing that current 
support of 'older' MSVCR in favor of the latest one, so to make the 
git's code base comparatively coherent and organized (as some/many 
instances of #ifdef _MSC_VER and #if define (_MSC_VER)  _MSC_VER  
xxx etc. will be gone, for instance we don't need fallback for sprint 
or snprintf since C99 std support for those is provisioned).




It's not clear if you (DP) are asking about using being able to use the 
Visual Studio IDE and gui to help visualise and develop the code, or to 
simply use the underlying MS compiler when making (using the Makefile) 
the Git code base.


One can compile the codebase using the MS compiler (given a suitable 
environment, and setting the right Makefile flags), but that may not be 
what you were thinking of.


The Windows team recently decided that the older Msysgit approach should 
be retired (can't find the link just now)  and a new approach based on 
Msys2 started (http://git-for-windows.github.io/ and 
https://github.com/git-for-windows/git/wiki/FAQ). This is nearing 
completion.


Meanwhile I have been working on fixing the msvc-build script, which can 
produce a git.sln and associated files (targeted originally at VS2008), 
and is now at the 'Validate this with the Windows guys' stage 
(http://marc.info/?l=gitm=143750907804881w=2 et.seq.).


My code, for the new G4W SDK, has been rebased from the msygit version, 
and is now at https://github.com/git-for-windows/git/pull/256


Does that help for creating an IDE compilable version?

Also, many thanks for yournote about the new VS Community edition (I'm 
still mainly working on an XP notebook for ease of carry).


As an open community of independently minded folks it can tae a time to 
gel around a reasonably common approach, especially as Git will always 
be primarily focussed on Linux (it **is** the Linux (Linus's) VCS!).





From: jacob.kel...@gmail.com
On Sat, Jul 25, 2015 at 11:23 PM, Dangling Pointer
danglingpoin...@outlook.com wrote:

Hello,

In my understanding, the ratio between the mere consumers of git on 
Windows vs. people who compile git for Windows is 100,000 : 1. If 
there is a breaking change in the workflow of the latter set, who 
use Visual Studio to build git from source, I assume that is doable 
given a good reason, hence this post.


With VS 2015, C99 support is finally added with some C11 features 
as well. See this blog: 
http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx. 
One of the edition of new VS is Community edition, which is like 
professional edition but is free (also much superior than Express 
edition) and meant for open source projects. VS2015 also has the 
ability to target compiler for Wind-XP.




I think the big issue is whether it has support for the various unix
interfaces and unix shell commands we use. MinGW/MSYS comes with
support for the unix interface, which I don't believe is that 
actually

supported via MSYS and I don't know if VS2015 is supported? I don't
think it's due to the C99 but due to need of posix interface which 
is

not normally (fully) provided by Windows.


Git's code retains a C89 compatibility (IIUC).



Regards,
Jake  --

--
Philip 


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


RE: FeatureRequest: Build improvements for Windows

2015-07-26 Thread Dangling Pointer
I searched in code and found instances of #ifdef _MSC_VER in 
https://github.com/git/git (original repository, not the fork).

I am coming from github, where I have found many native lib repositories have 
two build files, build.sh and build.cmd with

some windows-specific code turds like #ifdef _MSC_VER etc. which nobody 
appreciate because CL.exe up until last VS release

wasn't C99 complaint. This has changed with VS2015.


If git/git does not share this philosophy of having a build file for both nix 
and win, then I wonder why do we even have MS compiler

directives in git codebase in first place? That was the main source of 
confusion.


If the repo owner is willing to drop the old compiler support for Windows, 
since many windows users do not build from source

and tend to download the compiled binaries anyway.  If they want, they can 
always use MinGW and VS2015 to build. 


The idea is to keep the codebase clean from outdated _MSC_VER conditions. In 
this age,

free CI service (like AppVeyor) will build your code with latest compiler 
(MinGW GCC and MSVCR 2015) in a matter of minutes

and then make the release artifacts available for download. I really don't see 
any point in still using 8 years old compiler on a 15

years old OS when we can just throw a .yml (appveyor config) file in the repo 
root and let the cloud handle the build business and

verify the build by running tests. (well we are still using mailing lists, 
aren't we ;-)


Besides, I had no idea about this fork: https://github.com/msysgit/git but it 
seems to be falling behind significantly from the

upstream master (git/git).




 From: philipoak...@iee.org
 To: danglingpoin...@outlook.com
 CC: jacob.kel...@gmail.com; git@vger.kernel.org
 Subject: Re: FeatureRequest: Build improvements for Windows
 Date: Sun, 26 Jul 2015 12:27:19 +0100

 (In-line posting preferred; top-posting deprecated ;-)
 (retain all cc's)

 Hmm, it is already happening, isn't it? There is already a support of
 MSVCR in git's code base. I am referring to replacing that current
 support of 'older' MSVCR in favor of the latest one, so to make the
 git's code base comparatively coherent and organized (as some/many
 instances of #ifdef _MSC_VER and #if define (_MSC_VER)  _MSC_VER 
 xxx etc. will be gone, for instance we don't need fallback for sprint
 or snprintf since C99 std support for those is provisioned).


 It's not clear if you (DP) are asking about using being able to use the
 Visual Studio IDE and gui to help visualise and develop the code, or to
 simply use the underlying MS compiler when making (using the Makefile)
 the Git code base.

 One can compile the codebase using the MS compiler (given a suitable
 environment, and setting the right Makefile flags), but that may not be
 what you were thinking of.

 The Windows team recently decided that the older Msysgit approach should
 be retired (can't find the link just now) and a new approach based on
 Msys2 started (http://git-for-windows.github.io/ and
 https://github.com/git-for-windows/git/wiki/FAQ). This is nearing
 completion.

 Meanwhile I have been working on fixing the msvc-build script, which can
 produce a git.sln and associated files (targeted originally at VS2008),
 and is now at the 'Validate this with the Windows guys' stage
 (http://marc.info/?l=gitm=143750907804881w=2 et.seq.).

 My code, for the new G4W SDK, has been rebased from the msygit version,
 and is now at https://github.com/git-for-windows/git/pull/256

 Does that help for creating an IDE compilable version?

 Also, many thanks for yournote about the new VS Community edition (I'm
 still mainly working on an XP notebook for ease of carry).

 As an open community of independently minded folks it can tae a time to
 gel around a reasonably common approach, especially as Git will always
 be primarily focussed on Linux (it **is** the Linux (Linus's) VCS!).


 From: jacob.kel...@gmail.com
 On Sat, Jul 25, 2015 at 11:23 PM, Dangling Pointer
 danglingpoin...@outlook.com wrote:
 Hello,

 In my understanding, the ratio between the mere consumers of git on
 Windows vs. people who compile git for Windows is 100,000 : 1. If
 there is a breaking change in the workflow of the latter set, who
 use Visual Studio to build git from source, I assume that is doable
 given a good reason, hence this post.

 With VS 2015, C99 support is finally added with some C11 features
 as well. See this blog:
 http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx.
 One of the edition of new VS is Community edition, which is like
 professional edition but is free (also much superior than Express
 edition) and meant for open source projects. VS2015 also has the
 ability to target compiler for Wind-XP.


 I think the big issue is whether it has support for the various unix
 interfaces and unix shell commands we use. MinGW/MSYS comes with
 support for the unix interface, which I don't believe is 

Re: FeatureRequest: Build improvements for Windows

2015-07-26 Thread Philip Oakley

Hi,
From: Dangling Pointer danglingpoin...@outlook.com

I searched in code and found instances of #ifdef _MSC_VER in
https://github.com/git/git (original repository, not the fork).

I am coming from github, where I have found many native lib
repositories have two build files, build.sh and build.cmd with


Git is a *nix code base so rather than using build.*, it obviously uses 
a Makefile. The makefile can be slightly convoluted because it seeks to 
have maximum backward compatibility.



some windows-specific code turds like #ifdef _MSC_VER etc. which
nobody appreciate because CL.exe up until last VS release

wasn't C99 complaint. This has changed with VS2015.

https://github.com/git/git/blob/master/Documentation/CodingGuidelines#L174
The C89 compatibility came up recently (2015-04-30). It's still a live 
issue.



If git/git does not share this philosophy of having a build file for
both nix and win, then I wonder why do we even have MS compiler


The git/git philosophy is maximum backward compatibility, with Gnu/Linux 
as

a given.


directives in git codebase in first place? That was the main source of
confusion.

If the repo owner is willing to drop the old compiler support for
Windows, since many windows users do not build from source

Surely it's a case of building on the shoulders of former giants. Many
are still using VS200* out in the real world (my work uses V2008 and 
VS2006 commonly because of the need to support older embedded equipment)



and tend to download the compiled binaries anyway.  If they want, they
can always use MinGW and VS2015 to build.


The G4W projects do provide binaries as well as source code, and support
older compilers... It's the choice here.



The idea is to keep the codebase clean from outdated _MSC_VER
conditions. In this age,
free CI service (like AppVeyor) will build your code with latest
compiler (MinGW GCC and MSVCR 2015) in a matter of minutes
and then make the release artifacts available for download. I really
don't see any point in still using 8 years old compiler on a 15
years old OS

That's only a third of my coding life ;-). It's nice to use the latest
and greatest, but sometimes if it ain't broke, don't fix it applies to
choosing what to spend one's free hours on.


when we can just throw a .yml (appveyor config) file in the repo root
and let the cloud handle the build business and
verify the build by running tests. (well we are still using mailing
lists, aren't we ;-)


Besides, I had no idea about this fork: https://github.com/msysgit/git
but it seems to be falling behind significantly from the

upstream master (git/git).


If you look at the home page of the
https://github.com/git-for-windows/git/wiki/ I provided, you'll be able
to see why/how the team decided to leave that fork behind (though it did
get a major security fix applied). Folks on the *nix side can be using
v1.7.x and still have it all work, so there is no shame in using the
msysgit1.9.5.

The main point being that Git seeks to maintain backward compatibility
and is careful about how code is introduced.

It can be frustrating when one's latest and greatest idea is not as
readily picked up as hoped, but a moment (or two's) reflection will help
understand the broader issues that may pertain. That said useful new
fetures (with justification, code, documentation, and review ;-) are
welcome.

Do have a look at the
https://github.com/git-for-windows/git/wiki/How-to-participate





From: philipoak...@iee.org
(In-line posting preferred; top-posting deprecated ;-)
(retain all cc's)


Hmm, it is already happening, isn't it? There is already a support
of
MSVCR in git's code base. I am referring to replacing that current
support of 'older' MSVCR in favor of the latest one, so to make the
git's code base comparatively coherent and organized (as some/many
instances of #ifdef _MSC_VER and #if define (_MSC_VER)  _MSC_VER 
xxx etc. will be gone, for instance we don't need fallback for
sprint
or snprintf since C99 std support for those is provisioned).



It's not clear if you (DP) are asking about using being able to use
the
Visual Studio IDE and gui to help visualise and develop the code, or
to
simply use the underlying MS compiler when making (using the
Makefile)
the Git code base.

One can compile the codebase using the MS compiler (given a suitable
environment, and setting the right Makefile flags), but that may not
be
what you were thinking of.

The Windows team recently decided that the older Msysgit approach
should
be retired (can't find the link just now) and a new approach based on
Msys2 started (http://git-for-windows.github.io/ and
https://github.com/git-for-windows/git/wiki/FAQ). This is nearing
completion.

Meanwhile I have been working on fixing the msvc-build script, which
can
produce a git.sln and associated files (targeted originally at
VS2008),
and is now at the 'Validate this with the Windows guys' stage

Re: FeatureRequest: Build improvements for Windows

2015-07-26 Thread Jacob Keller
On Sat, Jul 25, 2015 at 11:23 PM, Dangling Pointer
danglingpoin...@outlook.com wrote:
 Hello,

 In my understanding, the ratio between the mere consumers of git on Windows 
 vs. people who compile git for Windows is 100,000 : 1. If there is a breaking 
 change in the workflow of the latter set, who use Visual Studio to build git 
 from source, I assume that is doable given a good reason, hence this post.

 With VS 2015, C99 support is finally added with some C11 features as well. 
 See this blog: 
 http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx.
  One of the edition of new VS is Community edition, which is like 
 professional edition but is free (also much superior than Express edition) 
 and meant for open source projects. VS2015 also has the ability to target 
 compiler for Wind-XP.


I think the big issue is whether it has support for the various unix
interfaces and unix shell commands we use. MinGW/MSYS comes with
support for the unix interface, which I don't believe is that actually
supported via MSYS and I don't know if VS2015 is supported? I don't
think it's due to the C99 but due to need of posix interface which is
not normally (fully) provided by Windows.

Regards,
Jake
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 06/10] ref-filter: add option to match literal pattern

2015-07-26 Thread Karthik Nayak
On Sun, Jul 26, 2015 at 10:45 AM, Eric Sunshine sunsh...@sunshineco.com wrote:
 On Fri, Jul 24, 2015 at 3:04 PM, Karthik Nayak karthik@gmail.com wrote:
 Since 'ref-filter' only has an option to match path names add an
 option for plain fnmatch pattern-matching.

 This is to support the pattern matching options which are used in `git
 tag -l` and `git branch -l` where we can match patterns like `git tag
 -l foo*` which would match all tags which has a foo* pattern.

 Signed-off-by: Karthik Nayak karthik@gmail.com
 ---
 diff --git a/ref-filter.c b/ref-filter.c
 index 8f2148f..0a64b84 100644
 --- a/ref-filter.c
 +++ b/ref-filter.c
 @@ -951,6 +951,31 @@ static int commit_contains(struct ref_filter *filter, 
 struct commit *commit)

  /*
   * Return 1 if the refname matches one of the patterns, otherwise 0.
 + * A pattern can be a literal prefix (e.g. a refname refs/heads/master
 + * matches a pattern refs/heads/mas) or a wildcard (e.g. the same ref
 + * matches refs/heads/mas*, too).
 + */
 +static int match_pattern(const char **patterns, const char *refname)
 +{
 +   for (; *patterns; patterns++) {
 +   /*
 +* When no '--format' option is given we need to skip the 
 prefix
 +* for matching refs of tags and branches.
 +*/
 +   if (!starts_with(*patterns, refs/tags/))
 +   skip_prefix(refname, refs/tags/, refname);
 +   if (!starts_with(*patterns, refs/heads/))
 +   skip_prefix(refname, refs/heads/, refname);
 +   if (!starts_with(*patterns, refs/remotes/))
 +   skip_prefix(refname, refs/remotes/, refname);

 Note the inefficiency here: You're performing an expensive
 starts_with() on each pattern for each refname even though the
 patterns will never change. You could instead compute starts_with()
 for each pattern just once, in a preprocessing step, and remember each
 result as a boolean, and then use the computed booleans here in place
 of starts_with(). For a few refnames, this may not make a difference,
 but for a project with a huge number, it could. Whether such an
 optimization is worth the complexity (at this time or ever) is
 something that can be answered by taking measurements.

 Also, the repetition in the code is not all that pretty. You could
 instead place refs/tags/, refs/heads/, and refs/remotes/ in a
 table and then loop over them rather than repeating the code for each
 one, though whether that would be an improvement is likely a judgment
 call (so not something I'd insist upon).


I just put the starts_with() code so as to ensure that its only used when
we don't say refs/heads/, refs/remotes/ or refs/tags/ in the pattern.
But looking at the tag.c and branch.c implementations this should always be
done. Hence I think Ill move it outside the loop and make it mandatory as this
pattern matching is only used by tag and branch and as they by default
remove the
path of the ref. I think it'd make sense to remove it here also.

-- 
Regards,
Karthik Nayak
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH] log: add log.firstparent option

2015-07-26 Thread Jeff King
On Sat, Jul 25, 2015 at 10:41:21AM -0700, Junio C Hamano wrote:

  I'm still on the fence to have the config kick in only for HEAD.
 
 Hmm, I cannot tell offhand if the confusion factor is worth it (I
 didn't say I don't think it is worth it).
 [...]

I've snipped most of your response because it all seemed pretty
reasonable to me.

At this point I think I am of the opinion that the decision to use
--first-parent is sufficiently nuanced that it the config option is not
really a drop-in solution for people, even if their projects follow
the matching workflow. Like you, I am not really _against_ it, but since
nobody in this thread is saying yes, I would turn that on, that may be
a sign. The patch is out there on the list, and I'd encourage people who
think it might be useful to apply the patch and report back in a few
weeks or months if they find it useful.

We _could_ merge the patch to make that experimentation easier for
users. The downside is we will be stuck supporting the log.firstParent
option forever, but I don't think it is actively _wrong_ to have. Just
possibly useless.

And poor Josh, who so nicely came to the Git table at OSCON and talked
to me about his project's workflow, has now had to put up with a slew of
emails and no applied patch. :)

But maybe this discussion is of some use; it has not been fruitless, as
I think the best answer so far is encourage awareness and appropriate
use of --first-parent.

 I admit I may be minority, but two common things I do everyday are
 log --first-parent v2.5.0-rc0.. and log --first-parent master..pu;
 I could certainly use a short-hand there.
 
 I already have alias for it, so this is not to help me personally,
 but log -FO to trigger first-parent one-line would make the alias
 unnecessary.

I do not have an alias, but I spell it --firTAB. :)

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/6] Documentation/config: mention now and never for 'expire' settings

2015-07-26 Thread Michael Haggerty
On 07/23/2015 09:00 PM, Eric Sunshine wrote:
 In addition to approxidate-style values (2.months.ago, yesterday),
 consumers of 'gc.*expire*' configuration variables also accept and
 respect 'now'/'all' (do it immediately) and 'never'/'false' (suppress
 entirely).
 
 Suggested-by: Michael Haggerty mhag...@alum.mit.edu
 Signed-off-by: Eric Sunshine sunsh...@sunshineco.com
 ---
 
 Reference: http://article.gmane.org/gmane.comp.version-control.git/274325
 
 I sneaked in a minor whitespace fix.
 
  Documentation/config.txt | 13 -
  1 file changed, 8 insertions(+), 5 deletions(-)
 
 diff --git a/Documentation/config.txt b/Documentation/config.txt
 index 1a8a399..cc920c0 100644
 --- a/Documentation/config.txt
 +++ b/Documentation/config.txt
 @@ -1307,20 +1307,22 @@ gc.packRefs::
  gc.pruneExpire::
   When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
   Override the grace period with this config variable.  The value
 - now may be used to disable this  grace period and always prune
 - unreachable objects immediately.
 + now may be used to disable this grace period and always prune
 + unreachable objects immediately; or never to suppress pruning.

A semicolon should be used without a conjunction, and the parts of a
sentence joined by a semicolon should be independent clauses. So this
should probably be

 [...] The value
now may be used to disable this grace period and always prune
unreachable objects immediately, or never may be used to
suppress pruning.

  gc.worktreePruneExpire::
   When 'git gc' is run, it calls
   'git worktree prune --expire 3.months.ago'.
   This config variable can be used to set a different grace
   period. The value now may be used to disable the grace
 - period and prune $GIT_DIR/worktrees immediately.
 + period and prune $GIT_DIR/worktrees immediately; or never to
 + suppress pruning.

The same here.

  gc.reflogExpire::
  gc.pattern.reflogExpire::
   'git reflog expire' removes reflog entries older than
 - this time; defaults to 90 days.  With pattern (e.g.
 + this time; defaults to 90 days. The value all expires all
 + entries; and false disables expiration. With pattern (e.g.
   refs/stash) in the middle the setting applies only to
   the refs that match the pattern.

Similarly, this could be fixed to

   [...] The value all expires all
entries; false disables expiration. [...]


 @@ -1328,7 +1330,8 @@ gc.reflogExpireUnreachable::
  gc.ref.reflogExpireUnreachable::
   'git reflog expire' removes reflog entries older than
   this time and are not reachable from the current tip;
 - defaults to 30 days.  With pattern (e.g. refs/stash)
 + defaults to 30 days. The value all expires all entries; and
 + false disables expiration. With pattern (e.g. refs/stash)
   in the middle, the setting applies only to the refs that
   match the pattern.

The same here.

Also, I wonder why you suggest now/never for the first two settings,
but all/false for the second two. Wouldn't it be less confusing to
be consistent?

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu

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


Re: [PATCH v4 01/10] ref-filter: add option to align atoms to the left

2015-07-26 Thread Duy Nguyen
On Sun, Jul 26, 2015 at 11:08 AM, Eric Sunshine sunsh...@sunshineco.com wrote:
 You can generate an interdiff with git diff branchname-v4
 branchname-v5, for instance.

Off topic. But what stops me from doing this often is it creates a big
mess in git tag -l. Do we have an option to hide away some
insignificant: tags? reflog might be an option if we have something
like foo@{/v2} to quickly retrieve the reflog entry whose message
contains v2.
-- 
Duy
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH] log: add log.firstparent option

2015-07-26 Thread Jeff King
On Sat, Jul 25, 2015 at 10:18:45AM -0700, Junio C Hamano wrote:

  [1] While reading the old git commit --notes thread recently, Johan
  Herland gave a plausible confusing example:
 
  ...
Why
---
 
To show that --- can be part of a commit message. :)
 
 That is all true, but such a commit already is problematic when used
 as an input to am, regardless of where the sign-off goes.

Right, and that is why I think there is no problem at all with treating
--- specially as part of format-patch. What I was trying to say here
is that doing it for git commit is less obviously OK. Many people do
not use am at all, and are otherwise fine with a message like the one
above (tools like rebase used to eat their message, but I think that was
fixed long ago).

 We could invent a new and more prominent delimiter, teach
 format-patch to add that between the log and patch if and only if
 the log has a three-dashes line in it (with an option to override
 that if and only if default), and teach mailsplit to pay
 attention to it.  People who are relying on the fact that a
 three-dashes line in the local log message will be stripped off at
 the receiving end have to pass that The commit has three-dash in it
 as a cut-mark on purpose; don't add that prominent delimiter option
 when formatting their patches out for submission.
 
 But I somehow think it is not worth the effort.  It is fairly well
 established that three-dash lines are cut marks and Johan's example
 log message above deliberately violates only to spite itself.  My
 knee-jerk advice is that people can just rephrase s/Why/Reason/ and
 be done with it.

Yeah, I agree it is not worth the effort. Three-dash is a totally fine
micro-format for email messages, and I do not see anybody complaining
about it. I just think that people who do not use am should not have
to care about it.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 01/10] ref-filter: add option to align atoms to the left

2015-07-26 Thread Karthik Nayak
On Sun, Jul 26, 2015 at 11:28 AM, Eric Sunshine sunsh...@sunshineco.com wrote:
 On Sun, Jul 26, 2015 at 12:36 AM, Karthik Nayak karthik@gmail.com wrote:
 On Sun, Jul 26, 2015 at 9:38 AM, Eric Sunshine sunsh...@sunshineco.com 
 wrote:
 Also, it is helpful to reviewers if you include an interdiff at the
 bottom of your cover letter showing the changes from one version to
 another. You can generate an interdiff with git diff branchname-v4
 branchname-v5, for instance.

 I've been working on the same branch, and that's why I didn't really
 provide interdiff's, and I kinda worked on the same branch again,
 so I wont be giving an interdiff for the next series either, but I'll keep 
 this
 in mind and follow it from the forthcoming patch series. Thanks

 You can still provide an interdiff. It is quite likely that you can
 find the commit corresponding to v4 in the reflog for that branch (see
 git-reflog). Failing that, an easy way to recover the state at v4 is
 to create a new branch (from the parent of your current working
 branch) and apply the v4 patches which you sent to the mailing list.
 If Junio queued v4 in his 'pu' branch, then you can also recover from
 there. Once you've recovered the state of v4 using one of the methods
 mentioned here (or some other), you can make an interdiff when sending
 out v5.


Haha, I was just thinking about applying my patches and doing it, will
definitely
provide an interdiff.

 Reviewers do appreciate that you provide a URL to the previous version
 and take the time to explain in your cover letter what changed (and
 why). Including an interdiff is one more way to ease the review
 process, and is also appreciated, so it may be worthwhile to put in
 the effort to recover the state of v4 so that you can include an
 interdiff with v5. Doing so does require a bit of extra work for you,
 but that's work you only need to do *once*, whereas if you don't do
 it, then you place the burden on *each* reviewer for *each* version,
 which quickly adds up to a lot more work for those reviewing your
 submissions.

Yes! definitely, I'll make sure that I provide the interdiff, I'll
look at reflog,
thanks a lot. I appreciate how reviewers take time to review code, its a
wonderful process. I will be glad to put in any time to make their process
easier

-- 
Regards,
Karthik Nayak
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


FeatureRequest: Build improvements for Windows

2015-07-26 Thread Dangling Pointer
Hello,
 
In my understanding, the ratio between the mere consumers of git on Windows vs. 
people who compile git for Windows is 100,000 : 1. If there is a breaking 
change in the workflow of the latter set, who use Visual Studio to build git 
from source, I assume that is doable given a good reason, hence this post.
 
With VS 2015, C99 support is finally added with some C11 features as well. 
See this blog: 
http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx.
 One of the edition of new VS is Community edition, which is like professional 
edition but is free (also much superior than Express edition) and meant for 
open source projects. VS2015 also has the ability to target compiler for 
Wind-XP. 
 
If all the instances of fallback code guarded by #ifdef _MSC_VER and #if 
defined(_MSC_VER)  _MSC_VER  xxx etc. are removed from git's source code in 
favor of VS2015, it will help the code maintainability in future and standard C 
code will thrive. The very few enthusiasts who were building Windows code can 
download the said free edition of VS2015 and build the project the same way as 
they were building before (I.e. using CLI .
 
Update to docs will look like: To build on Windows, you need to use MinGW or 
VS2015 (community, express desktop, professional or enterprise editions). I 
think this is choice for those few, who were building from source. Also, Clang 
and LLVM are also now available on Windows. So many options if someone is 
looking hard. What I am trying to say is dropping some century old version of 
VS support for a lazy user should not be an excuse for a deal-breaker anymore. 
World is moving at much faster pace to care about lazy. :)
 
In addition to Jenkins, there is also a free-for-OSS and easy-to-configure CI 
service called AppVeyor, which let you build using VS2015 and MInGW machineries 
(http://www.appveyor.com/updates/2015/07/21) and saves the artifacts for 
download or upload to somewhere. If git repo is configured with AppVeyor, it 
will automate the process of building releases for Windows, and there will be 
no version disparity like present (the current released version of git on Mac 
is v2.4.3 while that on misfortunate Windows is v1.9.5). 
 
In future if CMake (http://www.cmake.org/) is used in this repo to automate and 
unify all build systems, that is also available on AppVeyor, Jenkins, Travis 
etc.
 
Thank you for the patience and I hope someone will consider and approve these 
changes at some near point in future.
  --
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html