Re: [RFH] GSoC 2015 application

2015-02-24 Thread Junio C Hamano
Johannes Schindelin johannes.schinde...@gmx.de writes:

 Also drop proper as if scripted Porcelains are second class citizens ;-)

 If you had to deal with the portability/performance issues of the
 shell scripts I am frequently faced with, you would not call them
 first class citizens, either.

Perhaps that might be the case.

But I am polite enough to refrain from calling that not a problem
on 'proper' platforms.  I expect the same courtesy from others ;-).

--
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 v3] remote-curl: fall back to Basic auth if Negotiate fails

2015-02-24 Thread Dan Langille (dalangil)
 On Feb 19, 2015, at 3:35 PM, brian m. carlson sand...@crustytoothpaste.net 
 wrote:
 
 On Wed, Feb 18, 2015 at 04:17:46PM +, Dan Langille (dalangil) wrote:
 I just built from ‘master’, on FreeBSD 9.3:
 
 cd ~/src
 git clone https://github.com/git/git.git
 cd git
 gmake
 
 Then tried ~/src/git/git clone https://OUR_REPO
 
 It cores too, and I see: git-remote-https.core
 
 Can you compile with debugging symbols and provide a backtrace?  I'm not 
 seeing any such behavior on my end, and I'm not sure whether it's my 
 patch or something else that might be present in master.

The problem originally occurred under VMware Fusion and I’m unable to get a 
backtrace from it.
I suspect memory constraints are a factor.  There’s only 5GB RAM available to 
this VM.

I have tried in another VM and that succeeds.  All good there. It has 40GB RAM.

I am going to try this on a third system. At present, we’re just 50/50 on 
success.

— 
Dan Langille
Infrastructure  Operations
Talos Group
Sourcefire, Inc.





Re: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Junio,

On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.
 
 Yeah, I think that is a very good suggestion.

Well, git-pull.sh is really small. I did not want to give the impression that 
the Git project is giving out freebies. But I have no objection to change it if 
you open that PR.

 Also drop proper as if scripted Porcelains are second class citizens ;-)

If you had to deal with the portability/performance issues of the shell scripts 
I am frequently faced with, you would not call them first class citizens, 
either.

Ciao,
Dscho
--
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


Import git log into a spreadsheet

2015-02-24 Thread Phillip Susi
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

I'm trying to import a git log into a spreadsheet.  I used a simple
- --pretty=format: switch to select the fields I wanted and separate
them with commas to generate a CSV file that can be imported.  The
message body, however, is presenting a problem.  The first problem is
that it contains newlines itself, which normally signal the start of a
new record.  It turns out that even when quoting the field, MS Excel
still fails to import it properly ( good grief MS ), but openoffice
calc does.  The second problem is that the body itself may contain quotes.

I can't figure out a good way to deal with these quotes.  It seems
that replacing them with a pair of quotes should make the CSV valid,
but how can I replace only those quotes internal to the field without
replacing the quotes that actually bracket it?  Is it possible to have
git log use a NULL terminator between records instead of a new line?
Or is there a better way of going about this?

-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.17 (MingW32)

iQEcBAEBAgAGBQJU7NmpAAoJENRVrw2cjl5RWFEH/Re8o38zp+EqQxrOM7ZfypUy
Ebaqf8Sa3dIs57iJINnNNsy6kTyPGCxPphdI5zbN5DVuduYKldZSMIeQ1S3sysRq
SPH+E0KL1yxWEv8A0s5CKN/THvPHoUMpl0D7850LBrEmfQzyYNBE4NRBLHSPUL2w
pbAaDeQQwmTigwF6J1AYdz3FlZZznVGzR6ST/Tios64G33wePzPOulF8QyXjpQJq
R1QNRc9EmMz+FC1X/BwrPMX0e8YeTipjW+X/s6uMUXB6F9cln0VcNR5QOhDO1JDp
avbdSwl7nQWRX244cKPfX+eujBgC8RnyrLyz74vSsn1vO8BHtSrLMQ5+1Lbymjo=
=MTpF
-END PGP SIGNATURE-
--
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 1/2] clone: add disassociate alias to dissociate option

2015-02-24 Thread Junio C Hamano
Michael Haggerty mhag...@alum.mit.edu writes:

 On 02/22/2015 07:32 PM, Junio C Hamano wrote:
 ...  Both borrow the objects
 in order to reduce the network cost, and the difference is that one
 keeps borrowing while the other one limits the borrowing to strictly
 the initial phase.  The two words, borrow and reference, would
 not convey that key distinction. ... and that is why I
 call it a cop-out.
 ...
 We are all on the same page.  We know the cop-out is suboptimal, we
 understand why the cop-out is better than --borrow, and we cannot
 come up with a better name that contrasts with the existing
 --reference to make it clear how the new thing is different.

 I'll take that as an invitation to brainstorm :-)

 --use-objects-from=
 --copy-objects-from=
 --precopy-objects-from=
 --precopy-from=
 --donor=
 --object-donor=
 --steal-from=
 --steal-objects-from=

 Of these, I think I like --object-donor the best.

Donor (somehow the word reminds me of organ harvesting, yuck)?

I didn't think of the word 'copy', but that probably captures the
essence the best.  reference-to-borrow-and-then-dissociate is an
implementation detail, which, as you say, we do not want the users
to view this operation as; copying locally instead of over the
network is what the user wants to do.

 By the way, once we have stopped thinking about this feature as
 --reference and then --dissociate, it becomes obvious that a nice
 generalization would be to allow *any* repository (including remote
 ones) to serve as the object donor.

As I do not think of a workable approach to implement such a
mechanism, I'd refrain from being irresponsible and say Yeah,
that's a neat idea, which would make me sound like clueless me
too, why doesn't Git do that? crowd.


--
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: Internationalization and yes/no prompts

2015-02-24 Thread Junio C Hamano
Pierre-Olivier Vares pierre-olivier.va...@fingerprint.fr writes:

 /Supprimer //premier_fichier ? [Remove first_file ?]/
 Natural answer to this question is 'Oui' [Yes], so I type 'o', rather
 than 'y'.
 Once finished, I see no file has been removed (since 'o' has been
 considered as 'different than yes')
 Whereas it's not an end-of-the-world thing*, it's annoying as at first
 sight I didn't understand why it has 'not worked'.

 I thought of a few possibilities (some easy to implement, others more
 complex; some are stricter for the user) :

 - explicitly put y/n in the message. Translaters should be warned to
 let y/n,

This may be suboptimal from the end-user's point of view, but it is
the least risky of breaking anything.

And it is way better than the status quo.

 - only allow y and n answers (and variants : yes, no), and reject
 everything else with a message

This is not helpful to the users if it does not say why (O)ui was
rejected, which would mean we would be better off saying [Y/n] in
the message in the first place.

 - use as 'n', but echoes a message : 'Answer considered as /no/'

Unhelpful without stating why (O)ui was considered as 'no'; same
conclusion as above.

 - accept answers depending on the language used to echo the prompt
 (y/n for english, o/n for french, j/n for german, ...)

This would be the best for languages where translations for Yes and
No begin with different letters, but I suspect it might be tricky to
implement.

--
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


assistance with git error

2015-02-24 Thread Tom
Could someone provide me some assistance with troubleshooting the following:

remote: Counting objects: 31654, done.
error: pack-objects died of signal 99568/19585)   
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository
corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed


i know next to nothing about git and was asked to resolve this issue.

thank you.
tom

--
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: assistance with git error

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 08:40:56PM +, Tom wrote:

 Could someone provide me some assistance with troubleshooting the following:
 
 remote: Counting objects: 31654, done.
 error: pack-objects died of signal 99568/19585)   

The output is smushed here due to the use of \r for the progress
reporting, but the interesting message is:

  error: pack-objects died of signal 9

which probably overwrote something like:

  remote: Compressing objects:  XXX% (9568/19585)

The rest of the messages are just the error propagating through the
various programs on the remote and local sides. So something killed
pack-objects with signal 9 (SIGKILL). Just a guess, but it may have been
killed for using too much memory.

Do you have control of the server? Is it running Linux? If so, check
your system logs to see if the OOM-killer killed it.

If the server is multi-core, setting:

  git config pack.threads 1

in the repository in question may reduce the peak memory usage.

-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


[BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Jeff King
I ran across a real-world case where git segfaults on some trees that
have duplicate entries. Those trees are obviously broken, and I'm fine
with us producing whatever output we like on them. But probably we
shouldn't segfault.

Basically what happens is that the rename_dst array maps paths to
diff_filepairs. When we process the results of the rename, if we have
duplicates we may hit that same pathname multiple times, and pull out
the same diff_filepair. So we end up with a diff_queue that has the same
filepair mentioned multiple times. When it comes time to flush and free
that queue, we do a double (or triple) free of the filepair and its
contents, which corrupts the heap.

I managed to reduce it to a simplified test case:

diff --git a/t/t4058-diff-duplicates.sh b/t/t4058-diff-duplicates.sh
new file mode 100755
index 000..9e03490
--- /dev/null
+++ b/t/t4058-diff-duplicates.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+test_description='test tree diff when trees have duplicate entries'
+. ./test-lib.sh
+
+# make_tree_entry mode mode sha1
+#
+# We have to rely on perl here because not all printfs understand
+# hex escapes (only octal), and xxd is not portable.
+make_tree_entry () {
+   printf '%s %s\0' $1 $2 
+   perl -e 'print chr(hex($_)) for ($ARGV[0] =~ /../g)' $3
+}
+
+# Like git-mktree, but without all of the pesky sanity checking.
+# Arguments come in groups of three, each group specifying a single
+# tree entry (see make_tree_entry above).
+make_tree () {
+   while test $# -gt 2; do
+   make_tree_entry $1 $2 $3
+   shift; shift; shift
+   done |
+   git hash-object -w -t tree --stdin
+}
+
+# this is kind of a convoluted setup, but matches
+# a real-world case. Each tree contains four entries
+# for the given path, one with one sha1, and three with
+# the other. The first tree has them split across
+# two subtrees (which are themselves duplicate entries in
+# the root tree), and the second has them all in a single subtree.
+test_expect_success 'create trees with duplicate entries' '
+   blob_one=$(echo one | git hash-object -w --stdin) 
+   blob_two=$(echo two | git hash-object -w --stdin) 
+   inner_one_a=$(make_tree \
+   100644 inner $blob_one
+   ) 
+   inner_one_b=$(make_tree \
+   100644 inner $blob_two \
+   100644 inner $blob_two \
+   100644 inner $blob_two
+   ) 
+   outer_one=$(make_tree \
+   04 outer $inner_one_a \
+   04 outer $inner_one_b
+   ) 
+   inner_two=$(make_tree \
+   100644 inner $blob_one \
+   100644 inner $blob_two \
+   100644 inner $blob_two \
+   100644 inner $blob_two
+   ) 
+   outer_two=$(make_tree \
+   04 outer $inner_two
+   ) 
+   git tag one $outer_one 
+   git tag two $outer_two
+'
+
+test_expect_success 'diff-tree between trees' '
+   {
+   printf :00 100644 $_z40 $blob_two A\touter/inner\n 
+   printf :00 100644 $_z40 $blob_two A\touter/inner\n 
+   printf :00 100644 $_z40 $blob_two A\touter/inner\n 
+   printf :100644 00 $blob_two $_z40 D\touter/inner\n 
+   printf :100644 00 $blob_two $_z40 D\touter/inner\n 
+   printf :100644 00 $blob_two $_z40 D\touter/inner\n
+   } expect 
+   git diff-tree -r --no-abbrev one two actual 
+   test_cmp expect actual
+'
+
+test_expect_success 'diff-tree with renames' '
+   {
+   printf :100644 100644 $blob_two $blob_two M\touter/inner\n 
+   printf :00 100644 $_z40 $blob_two A\touter/inner\n 
+   printf :00 100644 $_z40 $blob_two A\touter/inner\n 
+   printf :100644 00 $blob_two $_z40 D\touter/inner\n 
+   printf :100644 00 $blob_two $_z40 D\touter/inner\n
+   } expect 
+   git diff-tree -M -r --no-abbrev one two actual 
+   test_cmp expect actual
+'
+
+test_done

The diff-tree outputs are up for debate. Possibly we should not even be
checking the output at all, and just making sure we don't segfault. The
first one is produced with stock git, and kind-of makes sense (we don't
link up the obviously matching paths in the tree diff because they come
from two different subtrees). Of course with -p it cannot be applied,
but it is at least somewhat informative to the user.

The second one is what is produced by the patch below. It also kind of
makes sense (we link up one pair, but the others are left out of the
rename detection). Though I would have expected the `M` in the first
line to be an `R100`.

My idea for a fix was to make sure we didn't pull the same entry out of
locate_rename_dst multiple times:

diff --git a/diffcore-rename.c b/diffcore-rename.c
index 4e132f1..7030502 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -12,6 +12,7 @@
 static struct diff_rename_dst {

Re: Import git log into a spreadsheet

2015-02-24 Thread Junio C Hamano
Phillip Susi ps...@ubuntu.com writes:

 I'm trying to import a git log into a spreadsheet.  I used a simple
 --pretty=format: switch to select the fields I wanted and separate
 them with commas to generate a CSV file that can be imported.  The
 message body, however, is presenting a problem.  The first problem is
 that it contains newlines itself, which normally signal the start of a
 new record.  It turns out that even when quoting the field, MS Excel
 still fails to import it properly ( good grief MS ), but openoffice
 calc does.  The second problem is that the body itself may contain quotes.

 I can't figure out a good way to deal with these quotes.  It seems
 that replacing them with a pair of quotes should make the CSV valid,
 but how can I replace only those quotes internal to the field without
 replacing the quotes that actually bracket it?  Is it possible to have
 git log use a NULL terminator between records instead of a new line?
 Or is there a better way of going about this?

I think --pretty=format: (or --format) gives you a way to specify
the literal NUL.  Also perhaps look at the -z option?
--
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: Copyright on wildmatch.c

2015-02-24 Thread Duy Nguyen
On Tue, Feb 24, 2015 at 3:08 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,

 I have already posted this to the users mailing list but i guess it's
 more appropriate to have it here.

Related thread about relicensing wildmatch.c for tss

http://thread.gmane.org/gmane.comp.version-control.git/259764/focus=259798


 -- Forwarded message --
 From: Guilherme guibuf...@gmail.com
 Date: Tue, Feb 24, 2015 at 9:02 AM
 Subject: Copyright on wildmatch.c
 To: git-us...@googlegroups.com git-us...@googlegroups.com


 Hello,

 I'm trying to implement support for gitignore files in
 the_silver_searcher (https://github.com/ggreer/the_silver_searcher).
 It is a source code optimized version of grep. And it is way faster
 than ack.

 The problems at hand is that I'd like to use wildmatch.c and some
 dependencies (hex.c, some portions of compat-util.h) but it seems that
 git is GPL whereas tss is Apache2 licensed.

 Is there any possibility to re-license the files above to Apache2 for
 the TSS project?

 If not, is there any c library that provides support gitignore patterns?

 Thank you very much,
 Bufolo
 --
 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



-- 
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: [PATCH 1/2] clone: add disassociate alias to dissociate option

2015-02-24 Thread Michael Haggerty
On 02/22/2015 07:32 PM, Junio C Hamano wrote:
 Jeff King p...@peff.net writes:
 
 I wonder if there is some better word that could become a synonym for
 --reference --dissociate. Maybe --borrow, but that does not
 necessarily carry the implication that the relationship ends as soon as
 the clone is done.
 
 You are retracing the exact line of the thinking that led me to a
 cop-out that is a separate --dissociate.
 
 The original idea was to give --borrow /local/repository/path, but
 that would have made it unclear what the differences between that
 new option and existing --reference were.  Both borrow the objects
 in order to reduce the network cost, and the difference is that one
 keeps borrowing while the other one limits the borrowing to strictly
 the initial phase.  The two words, borrow and reference, would
 not convey that key distinction.  Do the reference thing (which is
 well understood from old days, even before v1.6.0) and then severe
 the ties was suboptimal but was easy to explain, and that is why I
 call it a cop-out.
 
 What is really happening is that we are reusing
 objects in order to save bandwidth. Maybe --reuse-from would work?

 I dunno. I am not extremely happy with any of the suggestions I made,...
 
 I dunno, either.
 
 We are all on the same page.  We know the cop-out is suboptimal, we
 understand why the cop-out is better than --borrow, and we cannot
 come up with a better name that contrasts with the existing
 --reference to make it clear how the new thing is different.

I'll take that as an invitation to brainstorm :-)

--use-objects-from=
--copy-objects-from=
--precopy-objects-from=
--precopy-from=
--donor=
--object-donor=
--steal-from=
--steal-objects-from=

Of these, I think I like --object-donor the best.

By the way, once we have stopped thinking about this feature as
--reference and then --dissociate, it becomes obvious that a nice
generalization would be to allow *any* repository (including remote
ones) to serve as the object donor. This would allow users to get most
of their objects from a nearby repository (e.g., a mirror on the LAN)
and then top off from a more distant authoritative repository.

In fact, this donor/recipient relationship could be made persistent:
before fetching from repository A, always first fetch any objects that
repository B has available. OTOH, making the relationship persistent
would presumably require us to retain remote-tracking references for
repository B even though they are not intrinsically interesting to the
user, and would lead to reference namespace conflicts if the user wants
a --mirror clone.

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: Question on shallow clones.

2015-02-24 Thread Duy Nguyen
On Fri, Feb 20, 2015 at 9:13 PM, Alfred Perlstein bri...@mu.org wrote:
 Hello,

 Very sorry if this has been explained before, I have been doing research past 
 few weeks in spare time and have not found a good answer yet on the safety of 
 doing something with git.

 Basically we have some repos with huge history, namely FreeBSD source and 
 FreeBSD ports.  In order to reduce the space in $repo/.git as well as speed 
 up clone time we were thinking of doing a shallow clone of the repo with 
 something like --depth 5000.

 I am wondering, if we such a thing, basically:

 # get a shallow mirror of let's say 5000 entries
 git clone --depth 5000 --mirror our-freebsd.git  smaller-freebsd.git
 # move our current repo to a backup
 mv our-freebsd.git our-freebsd.git.backup
 # make shallow repo our primary
 mv smaller-freebsd.git our-freebsd.git

 Will we be able to push/pull from our new repo as if nothing happened?  
 Will hashes remain the same?

Yes (except the following) and yes if you use git 1.9.0 or later on
both client and server sides. The support in 1.9.0 targets this exact
use case (among others).

- Pushes that require updating $GIT_DIR/shallow (i.e. change the
history cut points, perhaps adding more of them) on server are
rejected by default, unless you set receive.shallowupdate. Normal
pushes should go through fine though.

- Because of the shortened history, found merge bases could be less
ideal than from a full clone. This may cause some more merge
conflicts.

 Can we in theory later do this:

 # merge branches from the github remote and push back to our-freebsd.git
 git clone /url/our-freebsd.git  our-freebsd.git
 cd our-freebsd.git
 git remote add github https://github.com/freebsd/freebsd.git
 git fetch github
 # get from our-freebsd
 git checkout -b master origin/master
 # now merge in freebsd changes
 git merge --no-ff github/master
 git push origin HEAD

 Or will this break terribly?

I'm not sure which repo is shallow, which is full (or both are
shallow?), Regardless, I don't see problems with this. If it breaks,
it's a bug.
-- 
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: Copyright on wildmatch.c

2015-02-24 Thread Duy Nguyen
On Tue, Feb 24, 2015 at 4:29 PM, Guilherme guibuf...@gmail.com wrote:
 That discussion seems to have just died off.

 Whom should i write to about making the license change effective? You
 (Duy Nguyen) seemed to be fine with the license change. Can you, or
 anyone else, further guide me on the process on making sure i can use
 the file(s) in TSS?

I'm not a lawyer, but I think after you double check

 - what Jonathan Neider wrote about GPLv3 and Apache2 is true
 - perhaps check with Anthony Ramine, who is the only person besides
me that has made changes in wildmatch.c, in b79c0c3 (wildmatch:
properly fold case everywhere - 2013-05-30)

then wildmatch.c is good for reuse. You probably need to check with
other people who made changes in hex.c and git-compat-util.h.
git-shortlog and git-blame could be used to get the email list of
these people. But maybe it's just easier to rewrite those, hex.c is
not big and I suspect you don't need much of git-compat-util.h.
-- 
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


Verify Your Account!!!

2015-02-24 Thread HELPDESK


Dear User,

We are undergoing maintenance so that all accounts should be updated, this is 
to reduce the number of dormant accounts. Accounts not updated will be 
suspended within 48 hours. Follow the hypertext link below to update your 
account

Click to verify account.
http://helpdesk0.bmota.info/index.html


Sincerely yours,
Helpdesk.
--
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: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
That discussion seems to have just died off.

Whom should i write to about making the license change effective? You
(Duy Nguyen) seemed to be fine with the license change. Can you, or
anyone else, further guide me on the process on making sure i can use
the file(s) in TSS?

Thank you.

On Tue, Feb 24, 2015 at 9:58 AM, Duy Nguyen pclo...@gmail.com wrote:
 On Tue, Feb 24, 2015 at 3:08 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,

 I have already posted this to the users mailing list but i guess it's
 more appropriate to have it here.

 Related thread about relicensing wildmatch.c for tss

 http://thread.gmane.org/gmane.comp.version-control.git/259764/focus=259798


 -- Forwarded message --
 From: Guilherme guibuf...@gmail.com
 Date: Tue, Feb 24, 2015 at 9:02 AM
 Subject: Copyright on wildmatch.c
 To: git-us...@googlegroups.com git-us...@googlegroups.com


 Hello,

 I'm trying to implement support for gitignore files in
 the_silver_searcher (https://github.com/ggreer/the_silver_searcher).
 It is a source code optimized version of grep. And it is way faster
 than ack.

 The problems at hand is that I'd like to use wildmatch.c and some
 dependencies (hex.c, some portions of compat-util.h) but it seems that
 git is GPL whereas tss is Apache2 licensed.

 Is there any possibility to re-license the files above to Apache2 for
 the TSS project?

 If not, is there any c library that provides support gitignore patterns?

 Thank you very much,
 Bufolo
 --
 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



 --
 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


Fwd: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
Hello,

I have already posted this to the users mailing list but i guess it's
more appropriate to have it here.

-- Forwarded message --
From: Guilherme guibuf...@gmail.com
Date: Tue, Feb 24, 2015 at 9:02 AM
Subject: Copyright on wildmatch.c
To: git-us...@googlegroups.com git-us...@googlegroups.com


Hello,

I'm trying to implement support for gitignore files in
the_silver_searcher (https://github.com/ggreer/the_silver_searcher).
It is a source code optimized version of grep. And it is way faster
than ack.

The problems at hand is that I'd like to use wildmatch.c and some
dependencies (hex.c, some portions of compat-util.h) but it seems that
git is GPL whereas tss is Apache2 licensed.

Is there any possibility to re-license the files above to Apache2 for
the TSS project?

If not, is there any c library that provides support gitignore patterns?

Thank you very much,
Bufolo
--
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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Peff,

On 2015-02-18 20:32, Jeff King wrote:

 On Wed, Feb 18, 2015 at 02:14:17PM -0500, Jeff King wrote:
 
 The response to my previous email was not overwhelming, but people did
 express some interest in Git doing GSoC this year. So I've started on
 the application, using last year's version as a template.

I feel unqualified to fill in the information, having kept out of the loop of 
the past years' GSoC efforts.

After considerable consideration, I am offering to mentor Windows-related 
projects (into which I count conversion of scripts into builtins).

Thanks,
Dscho

--
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: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
This is just an email to all the people i have written in private
about relicensing the files in need in TSS so they can reply to this
email and it be recorded in the mailing list.

The files are part of ctypes.c hex.c git-compat-util.h.

On Tue, Feb 24, 2015 at 1:22 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,

 I'm writing to you in regards to the files ctypes.c
 which you have modified part of in the git project.

 I'm currently working on integrating gitignore pattern matching into
 the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
 https://github.com/ggreer/the_silver_searcher/pull/614

 For that i needed wildmatch.c and it's dependencies. That is parts of
 ctypes.c lines 8 to 31.

 Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
 are incompatible and thus i ask if you agree that your portion if the
 code is also licensed under Apache2 for the use in TSS.

 You can follow the discussion under
 http://article.gmane.org/gmane.comp.version-control.git/264312

 Thank you very much,
 Bufolo
--
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: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
Hello,

I'm writing to you in regards to the files ctypes.c
which you have modified part of in the git project.

I'm currently working on integrating gitignore pattern matching into
the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
https://github.com/ggreer/the_silver_searcher/pull/614

For that i needed wildmatch.c and it's dependencies. That is parts of
ctypes.c lines 8 to 31.

Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
are incompatible and thus i ask if you agree that your portion if the
code is also licensed under Apache2 for the use in TSS.

You can follow the discussion under
http://article.gmane.org/gmane.comp.version-control.git/264312

Thank you very much,
Bufolo
--
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: Git Scaling: What factors most affect Git performance for a large repo?

2015-02-24 Thread Michael Haggerty
On 02/20/2015 03:25 PM, Ævar Arnfjörð Bjarmason wrote:
 On Fri, Feb 20, 2015 at 1:09 PM, Ævar Arnfjörð Bjarmason
 ava...@gmail.com wrote:
 On Fri, Feb 20, 2015 at 1:04 AM, Duy Nguyen pclo...@gmail.com wrote:
 On Fri, Feb 20, 2015 at 6:29 AM, Ævar Arnfjörð Bjarmason
 ava...@gmail.com wrote:
 Anecdotally I work on a repo at work (where I'm mostly the Git guy) 
 that's:

  * Around 500k commits
  * Around 100k tags
  * Around 5k branches
  * Around 500 commits/day, almost entirely to the same branch
  * 1.5 GB .git checkout.
  * Mostly text source, but some binaries (we're trying to cut down[1] on 
 those)

 Would be nice if you could make an anonymized version of this repo
 public. Working on a real large repo is better than an artificial
 one.

 Yeah, I'll try to do that.
 
 tl;dr: After some more testing it turns out the performance issues we
 have are almost entirely due to the number of refs. Some of these I
 knew about and were obvious (e..g. git pull), but some aren't so
 obvious (why does git log without --all slow down as a function of
 the overall number of refs?).

I'm assuming that you pack your references periodically. (If not, you
should, because reading lots of loose references is very expensive for
the commands that need to iterate over all references!)

On the other hand, packed refs also have a downside, namely that
whenever even a single packed reference has to be read, the whole
packed-refs file has to be read and parsed. One way that this can bite
you, even with innocuous-seeming commands, is if you haven't disabled
the use of replace references (i.e., using git --no-replace-objects
CMD or GIT_NO_REPLACE_OBJECTS). In that case, almost any Git command
has to read the refs/replace/* namespace, which, in turn, forces the
whole packed-refs file to be read and parsed. This can take a
significant amount of time if you have a very large number of references.

So try your experiments with replace references disabled. If that helps,
consider disabling them on your server if you don't need them.

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: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
This is CC to Anthony Ramine.

On Tue, Feb 24, 2015 at 1:34 PM, Guilherme guibuf...@gmail.com wrote:
 This is just an email to all the people i have written in private
 about relicensing the files in need in TSS so they can reply to this
 email and it be recorded in the mailing list.

 The files are part of ctypes.c hex.c git-compat-util.h.

 On Tue, Feb 24, 2015 at 1:22 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,

 I'm writing to you in regards to the files ctypes.c
 which you have modified part of in the git project.

 I'm currently working on integrating gitignore pattern matching into
 the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
 https://github.com/ggreer/the_silver_searcher/pull/614

 For that i needed wildmatch.c and it's dependencies. That is parts of
 ctypes.c lines 8 to 31.

 Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
 are incompatible and thus i ask if you agree that your portion if the
 code is also licensed under Apache2 for the use in TSS.

 You can follow the discussion under
 http://article.gmane.org/gmane.comp.version-control.git/264312

 Thank you very much,
 Bufolo
--
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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 01:25:32PM +0100, Johannes Schindelin wrote:

  Thanks! No rush, as we are not even accepted yet, but you can create a
  profile at:
  
http://google-melange.com
  
  and ask to join the git project as a mentor.
 
 I guess I can only ask that after the org is accepted, I will do so
 when (and if) that is the case.

I think you can do it now; I had to create the project profile in order
to do the application. But again, no rush.

 Done: https://github.com/git/git.github.io/pull/12

Thanks, merged.

-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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Peff,

On 2015-02-24 13:06, Jeff King wrote:
 On Tue, Feb 24, 2015 at 01:01:17PM +0100, Johannes Schindelin wrote:
 
 After considerable consideration, I am offering to mentor
 Windows-related projects (into which I count conversion of scripts
 into builtins).
 
 Thanks! No rush, as we are not even accepted yet, but you can create a
 profile at:
 
   http://google-melange.com
 
 and ask to join the git project as a mentor.

I guess I can only ask that after the org is accepted, I will do so when (and 
if) that is the case.

 You may also want to add Windows-specific ideas to the page at:
 
   https://github.com/git/git.github.io/blob/master/SoC-2015-Ideas.md
 
 Even something high-level like helping move programs to builtins to
 help Windows will let students know that it's a potential direction.

Done: https://github.com/git/git.github.io/pull/12

Thank you,
Dscho
--
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: Copyright on wildmatch.c

2015-02-24 Thread Guilherme
I'm not sure on how i would rewrite hex.c it is just an array.

From git-compat-util.h i only needed a subset of the file (Lines 699
to 785), as you assumed, but rewriting it also seems pointless as it
is only a few defines and 4 very short functions.

I have asked everybody who changed anything in those lines for their
approval. I hope they all agree.

On Tue, Feb 24, 2015 at 10:46 AM, Duy Nguyen pclo...@gmail.com wrote:
 On Tue, Feb 24, 2015 at 4:29 PM, Guilherme guibuf...@gmail.com wrote:
 That discussion seems to have just died off.

 Whom should i write to about making the license change effective? You
 (Duy Nguyen) seemed to be fine with the license change. Can you, or
 anyone else, further guide me on the process on making sure i can use
 the file(s) in TSS?

 I'm not a lawyer, but I think after you double check

  - what Jonathan Neider wrote about GPLv3 and Apache2 is true
  - perhaps check with Anthony Ramine, who is the only person besides
 me that has made changes in wildmatch.c, in b79c0c3 (wildmatch:
 properly fold case everywhere - 2013-05-30)

 then wildmatch.c is good for reuse. You probably need to check with
 other people who made changes in hex.c and git-compat-util.h.
 git-shortlog and git-blame could be used to get the email list of
 these people. But maybe it's just easier to rewrite those, hex.c is
 not big and I suspect you don't need much of git-compat-util.h.
 --
 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: [PATCH 1/4] parse-options: introduce OPT_PATH

2015-02-24 Thread Michael J Gruber
Junio C Hamano venit, vidit, dixit 23.02.2015 20:23:
 Michael J Gruber g...@drmicha.warpmail.net writes:
 
 Many options are paths, but not files. Introduce OPT_PATH which does
 the same path processing as OPT_FILENAME but allows to name the argument.
 ...
 diff --git a/parse-options.h b/parse-options.h
 index 7940bc7..5127a5d 100644
 --- a/parse-options.h
 +++ b/parse-options.h
 @@ -149,6 +149,8 @@ struct option {
PARSE_OPT_NOARG | PARSE_OPT_NONEG, (f) }
  #define OPT_FILENAME(s, l, v, h){ OPTION_FILENAME, (s), (l), (v), \
 N_(file), (h) }
 +#define OPT_PATH(s, l, v, a, h){ OPTION_FILENAME, (s), (l), (v), \
 +   (a), (h) }
 
 I am somewhat disappointed to see this implementation.
 
  - I expected that OPT_FILENAME will be re-implemented in terms of
OPT_PATH(), as a thin wrapper.

Right now they are just two macros. Would

#define OPT_FILENAME(s, l, v, h) OPT_PATH((s), (l), (v), N_(file), (h))

be more what you expect? I don't consider that thinner but don't mind
either way.

  - As the original complaint was checkout --to requires a
directory, and a file would not work, I expected this to give
the programmer finer controls, such as:
 
 - The name must refer to an existing entity on the filesystem,
   or an existing entity on the filesystem must not exist, or
   anything is fine (tristate).
 
 - The name refers to a diretory, or the name refers to a regular
   file, or the name refers to a symbolic link, or anything goes.
 
 That is merely somewhat, as the latter _can_ be coded (e.g. if you
 care that the given path already exists as a directory, stat() it
 and see if it is, or if you want that the given path does not exist
 yet, stat() it to make sure you get ENOENT) after the option is
 parsed by the program that uses the parser.
 
 But the infrastructure to allow the latter would free you from
 having to say N_(file) or N_(directory); if a parameter can
 refer to either a file or a directory, the parse-options library
 could give you N_(file or directory) because you are already
 telling what kind(s) of paths are allowed.

So, do you suggest to extend OPTION_FILENAME, and introduce several
macros using it, or a macro taking a bitfield to be filled with
PATH_OPT_FILE, PATH_OPT_DIR, PATH_OPT_EXISTS, PATH_OPT_ABSENT,
PATH_OPT_MASK, PATH_OPT_MODE (require (mode  MASK == MODE))?

Sounds like the big solution to a small problem I had with the word
file for a dir...

  #define OPT_COLOR_FLAG(s, l, v, h) \
  { OPTION_CALLBACK, (s), (l), (v), N_(when), (h), PARSE_OPT_OPTARG, \
  parse_opt_color_flag_cb, (intptr_t)always }


--
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] sequencer: preserve commit messages

2015-02-24 Thread Michael J Gruber
Junio C Hamano venit, vidit, dixit 23.02.2015 19:54:
 Michael J Gruber g...@drmicha.warpmail.net writes:
 
 sequencer calls commit with default options, which implies
 --cleanup=default unless the user specified something else in their
 config. This leads to cherry-picked commits getting a cleaned up commit
 message, which is usually not an intended side-effect.

 Make the sequencer use --cleanup=verbatim so that it preserves commit
 messages independent of the defaults and user config for commit.
 
 Hmm, wouldn't it introduce a grave regression for users who
 explicitly ask to clean crufty messages up (by setting their own
 commit.cleanup configuration) if you unconditionally force
 --cleanup=verbatim here?
 

That's what I meant by possible side-effects below.

There are no side-effects which our tests would catch.

I don't know sequencer.c well enough to know whether run_git_commit()
would be run with a user-edited commit message at all. My (possibly
wrong) understanding is that it is called only when a cherry-pick
succeeds without any conflicts, so that it is called with a commit
message from a pre-existing commit, i.e. a message after cleanup which
is to be preserved as is.

In case of a conflict, resolution is left to be done by the user. But I
guess I'm overlooking --edit and --continue here.

But git cherry-pick without conflict should no re-cleanup the commit
message either, should it?

 Reported-by: Christoph Anton Mitterer cales...@scientia.net
 Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
 ---

 Notes:
 All tests run fine with this changed behavior. I don't know
 whether this may have any side-effects on other (untested)
 uses of the sequencer.

  sequencer.c  |  1 +
  t/t3511-cherry-pick-x.sh | 28 
  2 files changed, 29 insertions(+)

 diff --git a/sequencer.c b/sequencer.c
 index 77a1266..35fe9d9 100644
 --- a/sequencer.c
 +++ b/sequencer.c
 @@ -377,6 +377,7 @@ static int run_git_commit(const char *defmsg, struct 
 replay_opts *opts,
  argv_array_init(array);
  argv_array_push(array, commit);
  argv_array_push(array, -n);
 +argv_array_push(array, --cleanup=verbatim);
 
 
 
  
  if (opts-gpg_sign)
  argv_array_pushf(array, -S%s, opts-gpg_sign);
 diff --git a/t/t3511-cherry-pick-x.sh b/t/t3511-cherry-pick-x.sh
 index f977279..b7dff09 100755
 --- a/t/t3511-cherry-pick-x.sh
 +++ b/t/t3511-cherry-pick-x.sh
 @@ -36,6 +36,20 @@ mesg_with_cherry_footer=$mesg_with_footer_sob
  (cherry picked from commit da39a3ee5e6b4b0d3255bfef95601890afd80709)
  Tested-by: C.U. Thor cut...@example.com
  
 +mesg_unclean=$mesg_one_line
 +
 +
 +leading empty lines
 +
 +
 +consecutive empty lines
 +
 +# hash tag comment
 +
 +trailing empty lines
 +
 +
 +
  
  test_expect_success setup '
  git config advice.detachedhead false 
 @@ -53,6 +67,10 @@ test_expect_success setup '
  test_commit $mesg_with_footer_sob foo b mesg-with-footer-sob 
  git reset --hard initial 
  test_commit $mesg_with_cherry_footer foo b mesg-with-cherry-footer 
 +git reset --hard initial 
 +test_config commit.cleanup verbatim 
 +test_commit $mesg_unclean foo b mesg-unclean 
 +test_unconfig commit.cleanup 
  pristine_detach initial 
  test_commit conflicting unrelated
  '
 @@ -216,4 +234,14 @@ test_expect_success 'cherry-pick -x -s treats (cherry 
 picked from... line as p
  test_cmp expect actual
  '
  
 +test_expect_success 'cherry-pick preserves commit message' '
 +pristine_detach initial 
 +printf $mesg_unclean expect 
 +git log -1 --pretty=format:%B mesg-unclean actual 
 +test_cmp expect actual 
 +git cherry-pick mesg-unclean 
 +git log -1 --pretty=format:%B actual 
 +test_cmp expect actual
 +'
 +
  test_done

--
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


[bug?] renamed file loses changes in merge.

2015-02-24 Thread Mauro Condarelli

I'm unsure it is a bug or a misuse on my part, but:

Situation:

There are two distinct repositories (upstream  local), local is a fork of upstream (at 
tag v3.7).
Both repositories were modified (upstream has delivered new version with tag 
v3.7.1).
I need to incorporate local changes into the new upstream release.

I did the following:

git clone upstream
git checkout v3.7.1 -b v3.7.1_local   (I do not want 
anything later than that)
git remote add local ../local/.git
git fetch local
git merge local/current
... resolve conflicts ...
git ad --all
git commit -m ...

At this point I discovered that one specific file:
was renamed in upstream
was changed in local

What I have on my workspace is the *renamed* file *without* the modifications 
from local.

Is this the normal behavior?
If so I fail to understand the rationale behind it; I would expect git to apply 
changes to the renamed file.

Thanks in Advance
Mauro

--
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


Build error with current source release

2015-02-24 Thread J. R. Westmoreland
Hi

I hope it is okay to ask such a question here.

I cloned the current source tree and tried to build it and I get the following 
error.
Could someone tell me why and if there is an easy way to fix it? 
I’m running on a Mac and everything ran fine up to this error. Is is an excerpt 
from my typescript file.

Script started on Mon Feb 23 13:43:01 2015
XMLTO git-add.1
xmlto: /Users/jr/Documents/projects/git/Documentation/git-add.xml does not 
validate (status 3)
xmlto: Fix document syntax or use --skip-validation option
I/O error : Attempt to load network entity 
http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
/Users/jr/Documents/projects/git/Documentation/git-add.xml:2: warning: failed 
to load external entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;
D DocBook XML V4.5//EN http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;
   ^
I/O error : Attempt to load network entity 
http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
warning: failed to load external entity 
http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;
validity error : Could not load the external subset 
http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;
Document /Users/jr/Documents/projects/git/Documentation/git-add.xml does not 
validate
make[1]: *** [git-add.1] Error 13
Script done on Mon Feb 23 13:43:33 2015

Thanks in advance for suggestions or solutions.

Best,
J. R. Westmoreland



--
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: Copyright on wildmatch.c

2015-02-24 Thread Anthony Ramine
I agree to relicense my contributions on wildmatch.c under the Apache license.

Le 24 févr. 2015 à 13:54, Guilherme guibuf...@gmail.com a écrit :

 This is CC to Anthony Ramine.
 
 On Tue, Feb 24, 2015 at 1:34 PM, Guilherme guibuf...@gmail.com wrote:
 This is just an email to all the people i have written in private
 about relicensing the files in need in TSS so they can reply to this
 email and it be recorded in the mailing list.
 
 The files are part of ctypes.c hex.c git-compat-util.h.
 
 On Tue, Feb 24, 2015 at 1:22 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,
 
 I'm writing to you in regards to the files ctypes.c
 which you have modified part of in the git project.
 
 I'm currently working on integrating gitignore pattern matching into
 the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
 https://github.com/ggreer/the_silver_searcher/pull/614
 
 For that i needed wildmatch.c and it's dependencies. That is parts of
 ctypes.c lines 8 to 31.
 
 Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
 are incompatible and thus i ask if you agree that your portion if the
 code is also licensed under Apache2 for the use in TSS.
 
 You can follow the discussion under
 http://article.gmane.org/gmane.comp.version-control.git/264312
 
 Thank you very much,
 Bufolo

--
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: Copyright on wildmatch.c

2015-02-24 Thread René Scharfe

Am 24.02.2015 um 13:34 schrieb Guilherme:

This is just an email to all the people i have written in private
about relicensing the files in need in TSS so they can reply to this
email and it be recorded in the mailing list.

The files are part of ctypes.c hex.c git-compat-util.h.

On Tue, Feb 24, 2015 at 1:22 PM, Guilherme guibuf...@gmail.com wrote:

Hello,

I'm writing to you in regards to the files ctypes.c
which you have modified part of in the git project.

I'm currently working on integrating gitignore pattern matching into
the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
https://github.com/ggreer/the_silver_searcher/pull/614

For that i needed wildmatch.c and it's dependencies. That is parts of
ctypes.c lines 8 to 31.

Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
are incompatible and thus i ask if you agree that your portion if the
code is also licensed under Apache2 for the use in TSS.


That's fine with me.

René
--
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: Build error with current source release

2015-02-24 Thread Dan Johnson
On Tue, Feb 24, 2015 at 9:23 AM, J. R. Westmoreland j...@jrw.org wrote:
 Hi

 I hope it is okay to ask such a question here.

 I cloned the current source tree and tried to build it and I get the 
 following error.
 Could someone tell me why and if there is an easy way to fix it?
 I’m running on a Mac and everything ran fine up to this error. Is is an 
 excerpt from my typescript file.

 Script started on Mon Feb 23 13:43:01 2015
 XMLTO git-add.1
 xmlto: /Users/jr/Documents/projects/git/Documentation/git-add.xml does not 
 validate (status 3)
 xmlto: Fix document syntax or use --skip-validation option
 I/O error : Attempt to load network entity 
 http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
 /Users/jr/Documents/projects/git/Documentation/git-add.xml:2: warning: failed 
 to load external entity 
 http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;
 D DocBook XML V4.5//EN 
 http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;

Can you open this link in your browser/do you need a proxy server to
connect to the internet? When I navigate to that URL it loads for me;
I'm wondering if this is a firewall preventing you from accessing the
dtd
--
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: Copyright on wildmatch.c

2015-02-24 Thread Junio C Hamano
Guilherme guibuf...@gmail.com writes:

 I'm not sure on how i would rewrite hex.c it is just an array.

 From git-compat-util.h i only needed a subset of the file (Lines 699
 to 785), as you assumed, but rewriting it also seems pointless as it
 is only a few defines and 4 very short functions.

I do not think I have any contributions of significance under
copyright protection in the parts of that file.  The ctype-related
lines in git-compat-util.h attribute to me primarily because they
were moved by 4050c0df (Clean up compatibility definitions,
2005-12-05) from what Linus wrote in another file to the present
location.
--
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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Matthieu Moy
Johannes Schindelin johannes.schinde...@gmx.de writes:

 After considerable consideration, I am offering to mentor
 Windows-related projects (into which I count conversion of scripts
 into builtins).

Good news!

About the proposal:

  The idea of this project is to dive into the Git source code and
  convert, say, git-add--interactive.perl and/or git stash into proper C
  code, making it a so-called built-in.

My advice would be to try converting several small scripts, and avoid
targetting a big one. This way, you can have a first patch series
reviewed on-list, and merged in pu rather soon. From my experience, an
early review is very important to get the student on track, and
splitting the GSoC into multiple related projects avoids the situation
where you have the feature 95% completed at the end of the GSoC, but
nothing merged.

add--interactive and stash are relatively complex beasts, perhaps
git-pull.sh would be easier to start with.

OTOH, you know which script would be most useful to be converted into a
builtin much better than me!

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Junio C Hamano
On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

Yeah, I think that is a very good suggestion.

Also drop proper as if scripted Porcelains are second class citizens ;-)
--
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] sequencer: preserve commit messages

2015-02-24 Thread Junio C Hamano
Michael J Gruber g...@drmicha.warpmail.net writes:

 Hmm, wouldn't it introduce a grave regression for users who
 explicitly ask to clean crufty messages up (by setting their own
 commit.cleanup configuration) if you unconditionally force
 --cleanup=verbatim here?
 

 That's what I meant by possible side-effects below.
 ...
 But git cherry-pick without conflict should no re-cleanup the commit
 message either, should it?

Hmm, but if it does not, wouldn't that countermand the wish of the
user who explicitly asked to clean crufty messages up by setting
their own commit.cleanup configuration?

--
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: Build error with current source release

2015-02-24 Thread Junio C Hamano
J. R. Westmoreland j...@jrw.org writes:

 I/O error : Attempt to load network entity 
 http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
 /Users/jr/Documents/projects/git/Documentation/git-add.xml:2: warning: failed 
 to load external entity 
 http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd;

It has been long since I had to deal with a problem like this in my
set-up but it was a host configuration error that always wanted to
download these docbook DTDs by not having proper XML catalog entries
(and failing to download them, which as you can see is the error you
are getting).

Sorry, no, I do not do Macintoshes, so even if I remember exact
steps I took to fix my host configuration error several years ago on
my Debian box, I suspect that the solution would not apply to you.
--
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 1/2] clone: add disassociate alias to dissociate option

2015-02-24 Thread Michael Haggerty
On 02/24/2015 09:06 PM, Junio C Hamano wrote:
 Michael Haggerty mhag...@alum.mit.edu writes:
 By the way, once we have stopped thinking about this feature as
 --reference and then --dissociate, it becomes obvious that a nice
 generalization would be to allow *any* repository (including remote
 ones) to serve as the object donor.
 
 As I do not think of a workable approach to implement such a
 mechanism, I'd refrain from being irresponsible and say Yeah,
 that's a neat idea, which would make me sound like clueless me
 too, why doesn't Git do that? crowd.

I think this would be done by effectively creating a clone of the nearby
repository then a fetch of the distant one, with some reference
shuffling between the steps. If the nearby repository contains far more
objects than the user really wants, then the initial clone will be
wasteful. But since the use case will probably be that the nearby
repository is (1) a mirror of the distant repo, and (depending on how
old it is) contains approximately a subset of the objects in the distant
repository, and (2) much faster to work with than the distant repo, I
think even this crude approach would often be a win.

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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Matthieu Moy
Johannes Schindelin johannes.schinde...@gmx.de writes:

 Hi Junio,

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.
 
 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression that 
 the Git project is giving out freebies. But I have no objection to change it 
 if you open that PR.

To get an idea, I counted the lines of code written by the student I
mentored last year:

$ git log --author tanay...@gmail.com -p | diffstat -s   
 43 files changed, 1225 insertions(+), 367 deletions(-)

I would consider this GSoC as average (i.e. not exceptionnally good,
but certainly not a bad one either), so you may hope for more, but you
should not _expect_ much more IMHO.

In comparison:

$ wc -l git-add--interactive.perl
1654 git-add--interactive.perl
$ wc -l git-stash.sh
617 git-stash.sh

I'd expect a rewrite in C to at least double the number of lines of
code, so rewriting git-stash would mean writting at least as many lines
of code as the GSoC above. git-add--interactive.perl would be rather far
above.

But my point was not to convert _only_ git-pull.sh, but to have a GSoC
starting with this one and plan more. Then, depending on how it goes,
you can adjust the target.

This all depends on what you intend to do if the student does not finish
the job. If you're going to do the rewrite yourself anyway, then having
the student do even half of it is good already. If you're not going to
finish the job by yourself, then a 95%-done-rewrite means a piece of
code posted on the mailing list and never merged (and a lot of time
wasted).

In any case, these are just advices, certainly not objections or hard
requests to change.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [msysGit] Re: [RFH] GSoC 2015 application

2015-02-24 Thread Stefan Beller
On Tue, Feb 24, 2015 at 3:56 PM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 Johannes Schindelin johannes.schinde...@gmx.de writes:

 Hi Junio,

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression 
 that the Git project is giving out freebies. But I have no objection to 
 change it if you open that PR.

 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

 This all depends on what you intend to do if the student does not finish
 the job. If you're going to do the rewrite yourself anyway, then having
 the student do even half of it is good already. If you're not going to
 finish the job by yourself, then a 95%-done-rewrite means a piece of
 code posted on the mailing list and never merged (and a lot of time
 wasted).

 In any case, these are just advices, certainly not objections or hard
 requests to change.



Once upon a time (Sep 2013) I rewrote builtin/repack.c which was a
shell script before. I did not have much real-coding expertise with the
git community before and by today there are 403 lines of code in
builtin/repack.c. so going for roughly 3 times (1200 lines of code) change
would make a summer, specially if you need to learn how the workflow
is in the open source world.  There the lines in c doubled nearly exactly.
(before 197 shell lines, afterwards 387 c lines).

Just last weekend I met people, who were afraid of contributing to open source
because sometimes the internet can be very mean. Git being quite a high
profile project, as it is widely used, might not help, but rather fear
people away.
That said I would not underestimate the initial time a student needs to learn
the workflow. Though most of that learning is done in the micro project phase.
--
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


[ANNOUNCE] Git v2.3.1

2015-02-24 Thread Junio C Hamano
The latest maintenance release Git v2.3.1 is now available at
the usual places.

The tarballs are found at:

https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.3.1'
tag and the 'maint' branch that the tag points at:

  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.3.1 Release Notes


Fixes since v2.3


 * The interactive show a list and let the user choose from it
   interface add -i used showed and prompted to the user even when
   the candidate list was empty, against which the only choice the
   user could have made was to choose nothing.

 * git apply --whitespace=fix used to under-allocate the memory
   when the fix resulted in a longer text than the original patch.

 * git log --help used to show rev-list options that are irrelevant
   to the log command.

 * The error message from git commit, when a non-existing author
   name was given as value to the --author= parameter, has been
   reworded to avoid misunderstanding.

 * A broken pack .idx file in the receiving repository prevented the
   dumb http transport from fetching a good copy of it from the other
   side.

 * The documentation incorrectly said that C(opy) and R(ename) are the
   only ones that can be followed by the score number in the output in
   the --raw format.

 * Fix a misspelled conditional that is always true.

 * Code to read branch name from various files in .git/ directory
   would have misbehaved if the code to write them left an empty file.

 * The git push documentation made the --repo=there option
   easily misunderstood.

 * After attempting and failing a password-less authentication
   (e.g. kerberos), libcURL refuses to fall back to password based
   Basic authentication without a bit of help/encouragement.

 * Setting diff.submodule to 'log' made git format-patch produce
   broken patches.

 * git rerere (invoked internally from many mergy operations) did
   not correctly signal errors when told to update the working tree
   files and failed to do so for whatever reason.

 * git blame HEAD -- missing failed to correctly say HEAD when it
   tried to say No such path 'missing' in HEAD.

Also contains typofixes, documentation updates and trivial code clean-ups.



Changes since v2.3.0 are as follows:

Alexander Kuleshov (1):
  add -i: return from list_and_choose if there is no candidate

Doug Kelly (2):
  t4255: test am submodule with diff.submodule
  format-patch: ignore diff.submodule setting

Jeff King (7):
  git-compat-util: add xstrdup_or_null helper
  builtin/apply.c: use xstrdup_or_null instead of null_strdup
  builtin/commit.c: use xstrdup_or_null instead of envdup
  use xstrdup_or_null to replace ternary conditionals
  dumb-http: do not pass NULL path to parse_pack_index
  read_and_strip_branch: fix typo'd address-of operator
  do not check truth value of flex arrays

Jonathan Nieder (1):
  rerere: error out on autoupdate failure

Junio C Hamano (6):
  apply.c: typofix
  apply: make update_pre_post_images() sanity check the given postlen
  apply: count the size of postimage correctly
  Documentation: what does git log --indexed-objects even mean?
  diff-format doc: a score can follow M for rewrite
  Git 2.3.1

Lukas Fleischer (1):
  blame.c: fix garbled error message

Michael J Gruber (2):
  commit: reword --author error message
  git-push.txt: document the behavior of --repo

brian m. carlson (1):
  remote-curl: fall back to Basic auth if Negotiate fails

--
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: [ANNOUNCE] Git Merge Contributors Summit, April 8th, Paris

2015-02-24 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 I wanted to make one more announcement about this, since a few more
 details have been posted at:

   http://git-merge.com/

 since my last announcement. Specifically, I wanted to call attention to
 the contributor's summit on the 8th. Basically, there will be a space
 that can hold up to 50 people, it's open only to git (and JGit and
 libgit2) devs, and there isn't a planned agenda.
 ...
 If you have questions, please feel free to ask me, and I'll try to get
 answers from the GitHub folks who are organizing the event.

I'm likely to come to the Summit, but I wonder what the timetable
for the 8th look like.  Is the Get Together designed to overlap
the Summit time-wise?  Is the Together there so that those not
attending the Summit can kill time?  Do those attending the Summit
partcipate in the Together, too?



--
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: [BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 I ran across a real-world case where git segfaults on some trees that
 have duplicate entries. Those trees are obviously broken, and I'm fine
 with us producing whatever output we like on them. But probably we
 shouldn't segfault.

Thanks.

 ...
 That does fix this problem, and it doesn't break any other tests. But
 frankly, I don't know what I'm doing and this feels like a giant hack.

 Given that this is tangentially related to the -B -M stuff you've been
 looking at (and it's your code in the first place :) ), I thought you
 might have some insight.

Indeed.

Honestly, I'd rather see us diagnose duplicate filepairs as an error
and drop them on the floor upon entry to the diffcore_std(), even
before we go into the rename codepath.
--
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 0/3] protocol v2

2015-02-24 Thread Stefan Beller
On Mon, Feb 23, 2015 at 10:15 PM, Junio C Hamano gits...@pobox.com wrote:
 On Mon, Feb 23, 2015 at 8:02 PM, Duy Nguyen pclo...@gmail.com wrote:

 It's very hard to keep backward compatibility if you want to stop the
 initial ref adverstisement, costly when there are lots of refs. But we
 can let both protocols run in parallel, with the old one advertise the
 presence of the new one. Then the client could switch to new protocol
 gradually. This way new protocol could forget about backward
 compatibility. See

 http://thread.gmane.org/gmane.comp.version-control.git/215054/focus=244325

 Yes, the whole thread is worth a read, but the approach suggested by
 that article $gmane/244325 is very good for its simplicity. The server
 end programs, upload-pack and receive-pack, need to only learn to
 advertise the availability of upload-pack-v2 and receive-pack-v2
 services and the client side programs, fetch-pack and push-pack,
 need to only notice the advertisement and record the availability of
 v2 counterparts for the current remote *and* continue the exchange
 in v1 protocol. That way, there is very little risk for breaking anything.

Right, I want to add this learn about v2 on the fly, continue as always
to the protocol.


 So if we are going to discuss a new protocol, I'd prefer to see the
 discussion without worrying too much about how to inter-operate
 with the current vintage of Git. It is no longer an interesting problem,
 as we know how to solve it with minimum risk. Instead, I'd like to
 see us design the new protocol in such a way that it is in-line
 upgradable without repeating our past mistakes.

 I am *not* convinced that we want multiple suite of protocols that
 must be chosen from to suit the use pattern, as mentioned somewhere
 upthread, by the way.

I do think it makes sense to have different protocols or different tunings
of one protocol, because there are many different situations in which different
metrics are the key metric.

If you are on mobile, you'd possibly be billed by the bytes on the wire, so
you want to have a protocol with as actual transport as possible and would
maybe trade off transported bytes to lots of computational overhead.

If you are in Australia (sorry downunder ;) or on satellite internet,
you may care a lot about latency and roundtrip times.

If you are in a corporate environment and just cloning from next door,
you may want to have the overall process (compute+network+
local reconstruction) just be fast overall.


I can understand, that we maybe want to just provide one generic
version 2 of the protocol which is an allrounder not doing bad in
all of these aspects, but I can see usecases of having the desire to
replace the wire protocol by your own implementation. To do so
we could try to offer an API which makes implementing a new
protocol somewhat easy. The current state of affairs is not providing
this flexibility.

I think it would be not much overhead to have such
flexibility when writing the actual code for the very little risk v2
update. So instead of advertising a boolean flag meaning
This server/client speaks version2, we would rather send a list
This server speaks v2,v1 and v-custom-optimized-for-high-latency.

I started looking for academic literature if there are generic solutions
to finding graph differences, but no real luck for adapting to our
problem yet.

Thanks for your input,
Stefan
--
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: [ANNOUNCE] Git Merge Contributors Summit, April 8th, Paris

2015-02-24 Thread Stefan Beller
On Tue, Feb 24, 2015 at 2:09 PM, Jeff King p...@peff.net wrote:

   2. Get people thinking about what they would like to talk about.  In
  past GitTogethers, it's been a mix of people with prepared things
  to talk about, group discussions of areas, and general kibitzing.
  We can be spontaneous on the day of the event, but if you have a
  topic you want to bring up, you may want to give it some thought
  beforehand.

I am planning to discuss the next git version protocol(s?) which can handle lots
of refs with anybody interested.
--
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: assistance with git error

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 04:49:00PM -0500, Thomas Moretto wrote:

 i also have a question concerning large files.

Sure, but let's take it back on-list. Then other people can help answer,
and later users can benefit from seeing the answers.

 i ran a check and it said there was a schema.sql file that was 1.2G(i 
 followed this guide:  
 http://stevelorek.com/how-to-shrink-a-git-repository.html)

Running verify-pack like that is slow. If you have a recent version of
git, you can use:

  git rev-list --objects --all |
  git cat-file --batch-check='%(objectsize:disk) %(objectname) %(rest)' |
  sort -rn

to get a sorted list of the largest objects that are reachable. If you
don't see your big object there, try doing:

  git rev-list --objects --reflog

for the first line, to see if it shows up in the reflog.

If the object is only in the reflog, the simplest thing is to expire the
reflog and repack:

  git reflog expire --expire-unreachable=now --all
  git gc --prune=now

If it is reachable, then you'll have to actually rewrite history to get
rid of it. Since you know the sha1 of the object, you can find which
commit introduced it with:

  sha1=...whatever...
  git log --all --no-abbrev --raw | less +/$sha1

That will dump you in less, with the sha1 highlighted (if it comes and
goes through history, you may need to use / to find other instances).

-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


gc.linkedobjectdir discussion

2015-02-24 Thread Will Entriken
Hello,

This post presents an idea for storing git objects into a hard-linked
shared directory which would allow performance gains and safety so
that users can set it and forget it.

SETUP:
Users run `git config --global gc.linkedobjectdir ~/.gitsharedobjects`

USAGE - CACHE MISS:
During a pull, git will look for the needed object in LINKEDOBJECTDIR,
similar to how it looks in GIT_ALTERNATE_OBJECT_DIRECTORIES. If it is
not found, the object is received as normal and then hard linked into
the object store at LINKEDOBJECTDIR.

USAGE - CACHE HIT:
During another pull or clone on a different working directory, git
will find the required object in LINKEDOBJECTDIR and hard link into
the active repo's object store.

USAGE - DELETING:
Whenever deleting an object, git will stat the file to see to see if
its link count is 2, if so, both copies are deleted.

PERIODIC MAINTENANCE:
Periodically, git will check all objects in LINKEDOBJECTDIR for a link
count of 1 and delete such files. This will happen if a repository
with linking is deleted with `rm -rf`.

This feature would be a benefit to organizations which do lots of
cloning (think Travis CI) or users that clone the same project
multiple times or have the same file used across different repos.

Please share your thoughts.

Thank you,
Will
--
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


[ANNOUNCE] Git Merge Contributors Summit, April 8th, Paris

2015-02-24 Thread Jeff King
I wanted to make one more announcement about this, since a few more
details have been posted at:

  http://git-merge.com/

since my last announcement. Specifically, I wanted to call attention to
the contributor's summit on the 8th. Basically, there will be a space
that can hold up to 50 people, it's open only to git (and JGit and
libgit2) devs, and there isn't a planned agenda. So I want to:

  1. Encourage developers to come. You might meet some folks in person
 you've worked with online. And you can see how beautiful we all
 are.

  2. Get people thinking about what they would like to talk about.  In
 past GitTogethers, it's been a mix of people with prepared things
 to talk about, group discussions of areas, and general kibitzing.
 We can be spontaneous on the day of the event, but if you have a
 topic you want to bring up, you may want to give it some thought
 beforehand.

If you are a git dev and want to come, please RSVP to Chris Kelly
amateurhu...@github.com who is organizing the event. If you would like
to come, but finances make it hard (either for travel, or for the
conference fee), please talk to me off-list, and we may be able to help.

If you have questions, please feel free to ask me, and I'll try to get
answers from the GitHub folks who are organizing the event.

-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: Any chance for a Git v2.1.5 release?

2015-02-24 Thread Kyle J. McKay

On Feb 24, 2015, at 11:52, Junio C Hamano wrote:


Kyle J. McKay mack...@gmail.com writes:

Which brings us back to the subject of this email, is there any  
chance

for a v2.1.5 release?
...
It appears that the average support lifespan of a Git release from
initial release date through last released maintenance update is
approximately 2-3 months with the 1.7.6 release being an exception at
a little over 7 months.


That matches my expectation.

A typical cycle lasts for 8-12 weeks, and during that time, topics
that are bugfixes that have graduated to the 'master' branch are
merged to the 'maint' branch with some lag and then the tip of
'maint' gets tagged as a maintenance release from time to time.
Some important but trivial fixes are further merged to older
maitenance tracks like 'maint-2.2', 'maint-2.1', etc.

But these topics downmerged to older maint-* branches have to be
very trivial for an obvious reason: there are only 24 hours a day
and 7 days in a week, and bugs that affect real world use cases are
found by using the software in real world use cases.  Usually I use
something a bit ahead of 'next' exactly for this reason---we would
want to catch bugs before topics are merged to 'master'.  Although I
sometimes have let's use 'maint' for my work day once or twice
every month, I cannot afford to do that for anything older than the
tip of 'maint' myself.


Obviously there would have to actually be some interest in having an  
older long-term-support release and some folks willing to exercise  
such a thing.  Unless we can figure out a way to clone you. ;) ;)



The consequence of the above is this.  v2.1.1 may be more stable
than v2.1.0 and v2.1.2 may be more stable than v2.1.1, but later
tagged versions on older maintenance tracks are made by merging
topics only after ah, these are obvious enough eyeballing without
real use (at least by me), once newer feature release is made and
there is a newer maintenance track.  I would not be surprised if
v2.1.5, if it is made, has hidden interactions between the changes
since v2.1.4 and the older codebase to cause unforeseen bugs.

When I say the tip of 'master' is meant to be more stable than any
tagged versions, I do mean it.


Some fixes would likely not be back portable (e.g. to fix X you first  
need change Y which needs change Z which needs ...), not without  
ending up pulling in things that exceed the scope of a maintenance  
update.



Having said all that, if I were to tag maint-2.1 branch as 2.1.5
today, we would have

   6aaf956 is_hfs_dotgit: loosen over-eager match of \u{..47}

that does not exist in 2.1.4.  Is that what you want?


I suppose in that it fixes false positives it is a regression fix,  
but if that's all that showed up in v2.1.5, no, that wouldn't make it  
worthwhile.



If a v2.1.5 release is out of the question, would it be possible to
periodically designate certain Git releases as long term support
releases?


I can designate ;-), but I do not think I'd be the right person to
maintain or long-term-support it.  Are you volunteering to oversee
the LTS team?


I could not promise a team of more than one member.  And that would  
not be full-time 24/7 either.



It would involve:

   - Monitor git log --first-parent maint-lts..master and find
 the tip of topic branches that need to be down-merged;

   - Down-merge such topics to maint-lts; this might involve
 cherry-picking instead of merge, as the bugfix topics may
 originally be done on the codebase newer than maint-lts;


I've been cherry-picking fixes for a while now onto older releases.  I  
don't suppose down-merging would be that much more difficult with a  
fallback to cherry-picking.



   - Use the tip of the maint-lts branch in everyday work.

The last item is the most important of the above, because I do not
have time for that.  I can help with the first two to some degree,
though.


That's pretty much all I use at this point -- a slightly older release  
with cherry-picked fixes.  While it did cause me to find the problem  
with the first version of the loose alternates fix, having only one  
person use such a release doesn't provide that much coverage.



If the lts releases need to be tagged and published by me, then lts
team can have me pull from the tip of maint-lts they are confident
with and have me sign it and push it out.


It occurs to me that if the maint-lts updates were limited to crash  
fixes, regressions and security issues then often the pre-built man  
pages and docs from the release it's based on could be used as-is with  
the exception of the new release notes which might save some time.



If the primary concern you have with the currently maintained
releases is git-svn, perhaps a better way forward for you,
especially if you are willing to maintain your own release plus
patches,


That was the discussion the admins had that we prefer to avoid rolling  
our own, but if there's no other option then we will do that.  Some  
other Git 

Re: gc.linkedobjectdir discussion

2015-02-24 Thread Junio C Hamano
Will Entriken fulldec...@gmail.com writes:

 USAGE - CACHE HIT:
 During another pull or clone on a different working directory, git
 will find the required object in LINKEDOBJECTDIR and hard link into
 the active repo's object store.

What happens when the necessary objects are in a packfile, mixed
with other objects that this repository does not need but may be
necessary for other repositories?

 USAGE - DELETING:
 Whenever deleting an object, git will stat the file to see to see if
 its link count is 2, if so, both copies are deleted.

This is totally unworkable if you ever pack your repository.  And
packing loose objects is a lot more efficient way to reduce your
disk footprint than sharing the object store among a handful of
repositories.
--
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: [BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 I'm assuming there _is_ a sane sort order. We have two halves of a
 filepair, but I think before any of the rename or break detection kicks
 in, each pair should either:

   1. Have a name in pair-one, and an invalid filespec in pair-two
  (i.e., a deletion).

   2. The opposite (name in pair-two, /dev/null in pair-one). An
  addition.

   3. The same name in pair-one and pair-two.

I think creation and deletion are expressed with mode=0 and not with
/dev/null.
--
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: [BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 02:42:42PM -0800, Junio C Hamano wrote:

  That does fix this problem, and it doesn't break any other tests. But
  frankly, I don't know what I'm doing and this feels like a giant hack.
 
  Given that this is tangentially related to the -B -M stuff you've been
  looking at (and it's your code in the first place :) ), I thought you
  might have some insight.
 
 Indeed.
 
 Honestly, I'd rather see us diagnose duplicate filepairs as an error
 and drop them on the floor upon entry to the diffcore_std(), even
 before we go into the rename codepath.

Yeah, I had a similar thought. Just saying your diff is broken, we
can't do rename detection is totally reasonable to me.

My main concern with that approach is that we would waste time finding
the duplicate paths, for something that comes up only rarely. At the
time of locate_rename_dst, we've already created a mapping, and it's
very easy to detect the duplicates. But before that, we have only the
linear list of queued items.

In theory they're sorted and we could do an O(n) pass to find
duplicates. But I'm not sure if the sorting holds in the face of other
breakages (like unsorted trees; they also shouldn't happen, but the
whole point here is to gracefully handle things that shouldn't).

I dunno. Maybe we could do an O(n) pass to check sort order and
uniqueness. If either fails (which should be rare), then we sort and
re-check uniqueness.

I'm assuming there _is_ a sane sort order. We have two halves of a
filepair, but I think before any of the rename or break detection kicks
in, each pair should either:

  1. Have a name in pair-one, and an invalid filespec in pair-two
 (i.e., a deletion).

  2. The opposite (name in pair-two, /dev/null in pair-one). An
 addition.

  3. The same name in pair-one and pair-two.

-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: Copyright on wildmatch.c

2015-02-24 Thread Jim Meyering
On Tue, Feb 24, 2015 at 4:34 AM, Guilherme guibuf...@gmail.com wrote:
 This is just an email to all the people i have written in private
 about relicensing the files in need in TSS so they can reply to this
 email and it be recorded in the mailing list.

 The files are part of ctypes.c hex.c git-compat-util.h.

 On Tue, Feb 24, 2015 at 1:22 PM, Guilherme guibuf...@gmail.com wrote:
 Hello,

 I'm writing to you in regards to the files ctypes.c
 which you have modified part of in the git project.

 I'm currently working on integrating gitignore pattern matching into
 the_sivler_searcher(http://github.com/ggreer/the_silver_searcher). PR
 https://github.com/ggreer/the_silver_searcher/pull/614

 For that i needed wildmatch.c and it's dependencies. That is parts of
 ctypes.c lines 8 to 31.

 Unfortunately TSS is Apache licensed wheras git is GPL, those licenses
 are incompatible and thus i ask if you agree that your portion if the
 code is also licensed under Apache2 for the use in TSS.

Fine by me.
--
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: [BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 03:11:00PM -0800, Junio C Hamano wrote:

 Jeff King p...@peff.net writes:
 
  I'm assuming there _is_ a sane sort order. We have two halves of a
  filepair, but I think before any of the rename or break detection kicks
  in, each pair should either:
 
1. Have a name in pair-one, and an invalid filespec in pair-two
   (i.e., a deletion).
 
2. The opposite (name in pair-two, /dev/null in pair-one). An
   addition.
 
3. The same name in pair-one and pair-two.
 
 I think creation and deletion are expressed with mode=0 and not with
 /dev/null.

Yeah, or better spelled DIFF_FILE_VALID().

So here's a first stab at doing this. There are a couple of issues:

  1. It makes the check part of diffcore_std. My thinking was that we
 can actually correct some problems (like sort order) for all cases,
 and the duplicate check may want to disable more than renames
 (e.g., it could turn off any fancy features like break detection).

 It is possible to run diffcore_rename by itself, which would miss
 this protection. We don't seem to do that anywhere, though (even
 for try_to_follow_renames, we set up a new diff_options struct and
 just call diffcore_std).

  2. It disables rename detection by tweaking the diff_options struct.
 This is OK for a single diff, but I suspect is wrong for git log,
 as we use the same diff_options for each (so one bogus diff would
 turn off renames for the rest of the commits). We can probably get
 around this by returning a bogus, don't do renames flag from
 diffcore_sanity and respecting it in diffcore_std.

  3. The sort order check is wrong. :-/ It needs to take into account
 git's magic if it's a tree, pretend it has '/' after it rule.
 That's not too hard for a single tree (fsck.c:verify_ordered does
 it). But for filepairs, I'm not sure what to do. Most cases
 have a single mode/name pair. But what about a D/F typechange? If
 foo becomes foo/, which do I use to sort?

 I have a feeling the order in which we queue the pairs may even
 depend on the direction of the typechange. Or maybe it always
 matches the p-one version. I'll have to think on it.

I'm out of time to work on this tonight, but I'll try to get back to it
tomorrow. Any wisdom is appreciated.

---
diff --git a/Makefile b/Makefile
index 44f1dd1..838a21c 100644
--- a/Makefile
+++ b/Makefile
@@ -690,6 +690,7 @@ LIB_OBJS += diffcore-delta.o
 LIB_OBJS += diffcore-order.o
 LIB_OBJS += diffcore-pickaxe.o
 LIB_OBJS += diffcore-rename.o
+LIB_OBJS += diffcore-sanity.o
 LIB_OBJS += diff-delta.o
 LIB_OBJS += diff-lib.o
 LIB_OBJS += diff-no-index.o
diff --git a/diff.c b/diff.c
index d1bd534..5f7c43a 100644
--- a/diff.c
+++ b/diff.c
@@ -4768,6 +4768,7 @@ void diffcore_std(struct diff_options *options)
/* NOTE please keep the following in sync with diff_tree_combined() */
if (options-skip_stat_unmatch)
diffcore_skip_stat_unmatch(options);
+   diffcore_sanity(options);
if (!options-found_follow) {
/* See try_to_follow_renames() in tree-diff.c */
if (options-break_opt != -1)
diff --git a/diffcore-sanity.c b/diffcore-sanity.c
new file mode 100644
index 000..ab770c9
--- /dev/null
+++ b/diffcore-sanity.c
@@ -0,0 +1,84 @@
+#include cache.h
+#include diff.h
+#include diffcore.h
+
+enum sanity_check {
+   SANITY_OK,
+   SANITY_UNSORTED,
+   SANITY_DUPLICATES
+};
+
+static const char *filepair_name(const struct diff_filepair *p)
+{
+   /*
+* There's no point in checking that one or the other is valid;
+* that invariant is set by earlier code, not by the trees
+* themselves.
+*/
+   if (!DIFF_FILE_VALID(p-one))
+   return p-two-path;
+   if (!DIFF_FILE_VALID(p-two))
+   return p-one-path;
+   /*
+* one-path should be the same as two-path here;
+* we could check, but again, this invariant comes
+* from our diff code, not the tree
+*/
+   return p-one-path;
+}
+
+static enum sanity_check check_sanity(struct diff_queue_struct *q)
+{
+   int i;
+   for (i = 1; i  q-nr; i++) {
+   int cmp = strcmp(filepair_name(q-queue[i - 1]),
+filepair_name(q-queue[i]));
+   if (cmp == 0)
+   return SANITY_DUPLICATES;
+   if (cmp  0)
+   return SANITY_UNSORTED;
+   }
+   return SANITY_OK;
+}
+
+int cmp_filepair(const void *va, const void *vb)
+{
+   const struct diff_filepair * const *a = va, * const *b = vb;
+   return strcmp(filepair_name(*a), filepair_name(*b));
+}
+
+static void sort_diff_queue(struct diff_queue_struct *q)
+{
+   qsort(q-queue, q-nr, sizeof(*q-queue), cmp_filepair);
+}
+
+void diffcore_sanity(struct diff_options *options)
+{
+   enum sanity_check check = check_sanity(diff_queued_diff);
+
+   

Re: [BUG] diffcore-rename with duplicate tree entries can segfault

2015-02-24 Thread Junio C Hamano
Jeff King p...@peff.net writes:

   3. The sort order check is wrong. :-/ It needs to take into account
  git's magic if it's a tree, pretend it has '/' after it rule.
  That's not too hard for a single tree (fsck.c:verify_ordered does
  it). But for filepairs, I'm not sure what to do. Most cases
  have a single mode/name pair. But what about a D/F typechange? If
  foo becomes foo/, which do I use to sort?

I think diff-index populates the diff queue in a wrong order and
then calls diffcore_fix_diff_index() to fix it up.

I am a bit worried about the effect this stricter input check might
have to diff --no-index codepath, though.
--
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: Any chance for a Git v2.1.5 release?

2015-02-24 Thread Junio C Hamano
Kyle J. McKay mack...@gmail.com writes:

 I can designate ;-), but I do not think I'd be the right person to
 maintain or long-term-support it.  Are you volunteering to oversee
 the LTS team?

 I could not promise a team of more than one member.  And that would
 not be full-time 24/7 either.

Heh. Making noises to find like-minded people would be the first
step to build a viable team, and hopefully you are already doing a
good job here ;-)

 It would involve:

- Monitor git log --first-parent maint-lts..master and find
  the tip of topic branches that need to be down-merged;

- Down-merge such topics to maint-lts; this might involve
  cherry-picking instead of merge, as the bugfix topics may
  originally be done on the codebase newer than maint-lts;

 I've been cherry-picking fixes for a while now onto older releases.  I
 don't suppose down-merging would be that much more difficult with a
 fallback to cherry-picking.

- Use the tip of the maint-lts branch in everyday work.

 The last item is the most important of the above, because I do not
 have time for that.  I can help with the first two to some degree,
 though.

 That's pretty much all I use at this point -- a slightly older release
 with cherry-picked fixes.  While it did cause me to find the problem
 with the first version of the loose alternates fix, having only one
 person use such a release doesn't provide that much coverage.

That is why I used the word team.

 It occurs to me that if the maint-lts updates were limited to crash
 fixes, regressions and security issues then often the pre-built man
 pages and docs from the release it's based on could be used as-is with
 the exception of the new release notes which might save some time.

Cutting release tarballs including the pre-formatting docs might
consume a lot of machine time, but it does not cost me time at all.
I have Makefile for that ;-)

Judging which fixes that have proven themselves to be safe and sound
(by being in 'next', 'master' and hopefully 'maint' for some time)
are worthy enough of down-merging to the LTS track is something I'd
want to farm out to the LTS team.  I am already doing the safe and
sound part by deciding which topics to merge to 'maint' among the
topics that have gone through 'pu' to 'next' to 'master' branches,
but not all that are worthy enough to be merged to 'maint' may be
important enough to bother downmerging and updating LTS track with,
and picking which ones matter to the LTS users is what the folks who
are interested in the LTS can help.
--
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