From: Jeff King
Implement support for delta islands in git pack-objects
and document how delta islands work in
"Documentation/git-pack-objects.txt" and Documentation/config.txt.
This allows users to setup delta islands in their config and
get the benefit of less disk usage while cloning and
From: Jeff King
Hosting providers that allow users to "fork" existing
repos want those forks to share as much disk space as
possible.
Alternates are an existing solution to keep all the
objects from all the forks into a unique central repo,
but this can have some drawbacks. Especially when
This reduces the size of 'struct object_entry' and therefore
makes packing objects more efficient.
This also renames cmp_tree_depth() into tree_depth_compare(),
as it is more modern to have the name of the compare functions
end with "compare".
Helped-by: Jeff King
Helped-by: Duy Nguyen
This reduces the size of 'struct object_entry' from 88 bytes
to 80 and therefore makes packing objects more efficient.
For example on a Linux repo with 12M objects,
`git pack-objects --all` needs extra 96MB memory even if the
layer feature is not used.
Helped-by: Jeff King
Helped-by: Duy Nguyen
From: Jeff King
Signed-off-by: Jeff King
Signed-off-by: Christian Couder
---
t/t5319-delta-islands.sh | 143 +++
1 file changed, 143 insertions(+)
create mode 100755 t/t5319-delta-islands.sh
diff --git a/t/t5319-delta-islands.sh b/t/t5319-delta-islands.sh
From: Jeff King
Implement simple support for --delta-islands option and
repack.useDeltaIslands config variable in git repack.
This allows users to setup delta islands in their config and
get the benefit of less disk usage while cloning and fetching
is still quite fast and not much more CPU
This patch series is upstreaming work made by GitHub and available in:
https://github.com/peff/git/commits/jk/delta-islands
The above work has been already described in the following article:
https://githubengineering.com/counting-objects/
The above branch contains only one patch. In this
In a following commit, as we will use delta islands, we will
have to compute the write order for different layers, not just
for one.
Let's prepare for that by refactoring the code that will be
used to compute the write order for a given layer into a new
compute_layer_order() function.
This will
On Sat, Aug 11, 2018 at 4:12 PM, Jeff King wrote:
> On Sat, Aug 11, 2018 at 12:32:32PM +0200, Christian Couder wrote:
>
>> Ok, I have made the following changes in the branch I will send next.
>>
>> diff --git a/delta-islands.c b/delta-islands.c
>> index 92137f2eca..22e4360810 100644
>> ---
While the `test_dir_is_empty` function appears correct in most normal
use cases, it can fail when filenames contain newlines. This patch
changes the implementation to check that the output of `ls -a` has at
most two lines (for `.` and `..`), which should be better behaved.
The newly added unit
> That will recurse any subdirectories, possibly wasting time, but since
> the point is that we expect it to be empty, that's probably OK.
One caveat involves invocations of `test_must_fail test_dir_is_empty`,
wherein we _don't_ actually expect the directory to be empty. It looks
like there might
Hi Ramsay and Peff,
On Sun, Aug 12, 2018 at 3:16 AM, Jeff King wrote:
> On Sun, Aug 12, 2018 at 01:30:02AM +0100, Ramsay Jones wrote:
>
>> My static-check.pl script has pinged me about the get_delta_base()
>> symbol from packfile.[co]. The first patch from your 'cc/delta-islands'
>> branch
Hi,
Git-cinnabar is a git remote helper to interact with mercurial
repositories. It allows to clone, pull and push from/to mercurial remote
repositories, using git.
Code on https://github.com/glandium/git-cinnabar
This release on
https://github.com/glandium/git-cinnabar/releases/tag/0.5.0
On Sun, Aug 12, 2018 at 01:30:02AM +0100, Ramsay Jones wrote:
> Hi Christian,
>
> My static-check.pl script has pinged me about the get_delta_base()
> symbol from packfile.[co]. The first patch from your 'cc/delta-islands'
> branch exports this symbol, saying that it will soon be called from
>
Hi Christian,
My static-check.pl script has pinged me about the get_delta_base()
symbol from packfile.[co]. The first patch from your 'cc/delta-islands'
branch exports this symbol, saying that it will soon be called from
outside packfile.c. As far as I can tell, no other patch in that series
adds
Signed-off-by: Ramsay Jones
---
Hi Pratik,
If you need to re-roll your 'pk/rebase-in-c-4-opts' branch, could
you please squash this into the relevant patch (commit b0721e7b48,
"builtin rebase: support `-C` and `--whitespace=`", 2018-08-08).
Thanks!
ATB,
Ramsay Jones
builtin/rebase.c | 2
On 11/08/18 21:50, Elijah Newren wrote:
> 'branch_track' feels more closely related to branching, and it is
> needed later in branch.h; rather than #include'ing cache.h in branch.h
> for this small enum, just move the enum and the external declaration
> for git_branch_track to branch.h.
>
>
Am 11.08.2018 um 19:23 schrieb Jeff King:
On Sat, Aug 11, 2018 at 01:02:48PM -0400, Jeff King wrote:
- we could probably improve the speed of oidset. Two things I notice
about its implementation:
Before any optimizations, my best-of-five timing for:
git cat-file
Am 11.08.2018 um 18:48 schrieb Jeff King:
And one I'm not sure about:
- a read() error will now be quietly ignored; I guess we'd have to
check ferror(fp) to cover this. I'm not sure if it matters.
I'm not sure, either. It would catch media errors or file system
corruption, right?
Signed-off-by: Elijah Newren
---
bisect.h | 2 ++
pack-objects.h | 1 +
2 files changed, 3 insertions(+)
diff --git a/bisect.h b/bisect.h
index a5d9248a47..34df209351 100644
--- a/bisect.h
+++ b/bisect.h
@@ -1,6 +1,8 @@
#ifndef BISECT_H
#define BISECT_H
+struct commit_list;
+
/*
*
Signed-off-by: Elijah Newren
---
urlmatch.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/urlmatch.h b/urlmatch.h
index 37ee5da85e..e482148248 100644
--- a/urlmatch.h
+++ b/urlmatch.h
@@ -1,4 +1,6 @@
#ifndef URL_MATCH_H
+#define URL_MATCH_H
+
#include "string-list.h"
struct url_info
Since both functions are using the same data type, they should either both
refer to it as void *, or both use the real type (struct alloc_state *).
Opt for the latter.
Signed-off-by: Elijah Newren
---
alloc.c | 2 +-
alloc.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git
Signed-off-by: Elijah Newren
---
alloc.h | 2 ++
apply.h | 3 +++
archive.h | 3 +++
attr.h| 1 +
branch.h | 2 ++
bulk-checkin.h| 2 ++
column.h | 1 +
commit-graph.h| 1 +
config.h
This series fixes compilation errors when using a simple test.c file that
includes git-compat-util.h and then exactly one other header (and repeating
this for different headers of git).
Changes since v1:
- Followed Peff's suggestion to make my simple test .c file first
#include
Signed-off-by: Elijah Newren
---
compat/precompose_utf8.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/compat/precompose_utf8.h b/compat/precompose_utf8.h
index a94e7c4342..6f843d3e1a 100644
--- a/compat/precompose_utf8.h
+++ b/compat/precompose_utf8.h
@@ -1,4 +1,6 @@
'branch_track' feels more closely related to branching, and it is
needed later in branch.h; rather than #include'ing cache.h in branch.h
for this small enum, just move the enum and the external declaration
for git_branch_track to branch.h.
Signed-off-by: Elijah Newren
---
branch.h | 11
On Sat, Aug 11, 2018 at 05:39:27PM +0200, René Scharfe wrote:
> The char array named "buffer" is unlikely to contain a NUL character, so
> printing its contents using %s in a die() format is unsafe. Clang's
> ASan reports running over the end of buffer in the recently added
> skiplist tests in
On 11/08/18 16:47, René Scharfe wrote:
> Object IDs to skip are stored in a shared static oid_array. Lookups do
> a binary search on the sorted array. The code checks if the object IDs
> are already in the correct order while loading and skips sorting in that
> case.
>
> Simplify the code by
On Fri, Aug 10, 2018 at 09:32:10PM -0700, Elijah Newren wrote:
> diff --git a/argv-array.h b/argv-array.h
> index a39ba43f57..c46238784c 100644
> --- a/argv-array.h
> +++ b/argv-array.h
> @@ -1,6 +1,8 @@
> #ifndef ARGV_ARRAY_H
> #define ARGV_ARRAY_H
>
> +#include "git-compat-util.h" /* for
On Sat, Aug 11, 2018 at 01:59:50AM -0700, Elijah Newren wrote:
> The part of my story you snipped in the ellipsis is kind of important,
> though: "...and decided to determine which header files were missing
> their own necessary #include's and forward declarations." The way I
> did so was making
On Sat, Aug 11, 2018 at 01:02:48PM -0400, Jeff King wrote:
> - we could probably improve the speed of oidset. Two things I notice
> about its implementation:
>
> - it has to malloc for each entry, which I suspect is the main
> bottleneck. We could probably pool-allocate blocks,
On Sat, Aug 11 2018, René Scharfe wrote:
> Object IDs to skip are stored in a shared static oid_array. Lookups do
> a binary search on the sorted array. The code checks if the object IDs
> are already in the correct order while loading and skips sorting in that
> case.
I think this change
On Sat, Aug 11, 2018 at 05:47:56PM +0200, René Scharfe wrote:
> Object IDs to skip are stored in a shared static oid_array. Lookups do
> a binary search on the sorted array. The code checks if the object IDs
> are already in the correct order while loading and skips sorting in that
> case.
>
>
On Sat, Aug 11, 2018 at 04:38:00PM +0200, Duy Nguyen wrote:
> On Sat, Aug 11, 2018 at 4:25 PM Jeff King wrote:
> > Responding myself and adding Duy to the cc to increase visibility among
> > worktree experts. :)
>
> I do silently watch this thread (and yes I still have to fix that fsck
> thing,
Object IDs to skip are stored in a shared static oid_array. Lookups do
a binary search on the sorted array. The code checks if the object IDs
are already in the correct order while loading and skips sorting in that
case.
Simplify the code by using an oidset instead. Memory usage is a bit
The char array named "buffer" is unlikely to contain a NUL character, so
printing its contents using %s in a die() format is unsafe. Clang's
ASan reports running over the end of buffer in the recently added
skiplist tests in t5504-fetch-receive-strict.sh as a result.
Use an idiomatic
On Sat, Aug 11, 2018 at 4:25 PM Jeff King wrote:
> Responding myself and adding Duy to the cc to increase visibility among
> worktree experts. :)
I do silently watch this thread (and yes I still have to fix that fsck
thing, hit a roadblock with ref names but I should really restart it
soon). Now
On Sat, Aug 11, 2018 at 10:23:41AM -0400, Jeff King wrote:
> > I do still have these warnings and no amount of git gc/git fsck/etc.
> > has reduced them in any way:
> >
> > $ git gc
> > warning: reflog of 'HEAD' references pruned commits
> > warning: reflog of 'HEAD' references pruned commits
>
On Sat, Aug 11, 2018 at 08:13:17AM -0400, Paul Smith wrote:
> I rebuilt Git 2.18.0 without optimization to try to get more debug
> information. Unfortunately I didn't think to create a backup of my
> problematic .git directory.
>
> When I ran the above command under the debugger using the
On Sat, Aug 11, 2018 at 12:32:32PM +0200, Christian Couder wrote:
> Ok, I have made the following changes in the branch I will send next.
>
> diff --git a/delta-islands.c b/delta-islands.c
> index 92137f2eca..22e4360810 100644
> --- a/delta-islands.c
> +++ b/delta-islands.c
> @@ -322,8 +322,7 @@
On Sat, Aug 11, 2018 at 12:09 PM SZEDER Gábor wrote:
>
>
> > Paths that only differ in case work fine in a case-sensitive
> > filesystems, but if those repos are cloned in a case-insensitive one,
> > you'll get problems. The first thing to notice is "git status" will
> > never be clean with no
On Wed, 2018-08-08 at 14:24 -0400, Jeff King wrote:
> If so, can you try running it under gdb and getting a stack trace?
> Something like:
>
> gdb git
> [and then inside gdb...]
> set args pack-objects --all --reflog --indexed-objects foobreak die
> run
> bt
>
> That might give us
On Sat, Aug 11, 2018 at 11:04 AM, SZEDER Gábor wrote:
>> diff --git a/delta-islands.c b/delta-islands.c
>> new file mode 100644
>> index 00..448ddcbbe4
>> --- /dev/null
>> +++ b/delta-islands.c
>
>> +static void deduplicate_islands(void)
>> +{
>> + struct remote_island *island, *core
> Paths that only differ in case work fine in a case-sensitive
> filesystems, but if those repos are cloned in a case-insensitive one,
> you'll get problems. The first thing to notice is "git status" will
> never be clean with no indication what exactly is "dirty".
>
> This patch helps the
> diff --git a/delta-islands.c b/delta-islands.c
> new file mode 100644
> index 00..448ddcbbe4
> --- /dev/null
> +++ b/delta-islands.c
> +static void deduplicate_islands(void)
> +{
> + struct remote_island *island, *core = NULL, **list;
> + unsigned int island_count, dst, src,
On Sat, Aug 11, 2018 at 1:30 AM Ævar Arnfjörð Bjarmason wrote
> On Sat, Aug 11 2018, Elijah Newren wrote:
>
> [CC'd sha1dc maintainers, for context the relevent patch is
> https://public-inbox.org/git/20180811043218.31456-8-new...@gmail.com/T/#u]
>
> > * Patches 6-8: These patches might need to
On Sat, Aug 11 2018, Elijah Newren wrote:
[CC'd sha1dc maintainers, for context the relevent patch is
https://public-inbox.org/git/20180811043218.31456-8-new...@gmail.com/T/#u]
> * Patches 6-8: These patches might need to be submitted to separate
> projects elsewhere. Let me know if so.
47 matches
Mail list logo