1
0
mirror of https://github.com/git/git.git synced 2025-03-22 05:16:34 +00:00
Jeff King 657673f125 pack-objects: show progress for reused packfiles
When the "--all-progress" option is in effect, pack-objects
shows a progress report for the "writing" phase. If the
repository has bitmaps and we are reusing a packfile, the
user sees no progress update until the whole packfile is
sent.  Since this is typically the bulk of what is being
written, it can look like git hangs during this phase, even
though the transfer is proceeding.

This generally only happens with "git push" from a
repository with bitmaps. We do not use "--all-progress" for
fetch (since the result is going to index-pack on the
client, which takes care of progress reporting). And for
regular repacks to disk, we do not reuse packfiles.

We already have the progress meter setup during
write_reused_pack; we just need to call display_progress
whiel we are writing out the pack. The progress meter is
attached to our output descriptor, so it automatically
handles the throughput measurements.

However, we need to update the object count as we go, since
that is what feeds the percentage we show. We aren't
actually parsing the packfile as we send it, so we have no
idea how many objects we have sent; we only know that at the
end of N bytes, we will have sent M objects. So we cheat a
little and assume each object is M/N bytes (i.e., the mean
of the objects we are sending). While this isn't strictly
true, it actually produces a more pleasing progress meter
for the user, as it moves smoothly and predictably (and
nobody really cares about the object count; they care about
the percentage, and the object count is a proxy for that).

One alternative would be to actually show two progress
meters: one for the reused pack, and one for the rest of the
objects. That would more closely reflect the data we have
(the first would be measured in bytes, and the second
measured in objects). But it would also be more complex and
annoying to the user; rather than seeing one progress meter
counting up to 100%, they would finish one meter, then start
another one at zero.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-03-17 15:01:25 -07:00
2014-02-27 14:01:48 -08:00
2014-03-14 14:25:31 -07:00
2014-01-21 13:16:17 -08:00
2014-02-27 14:01:09 -08:00
2014-01-10 10:32:18 -08:00
2014-02-27 14:01:30 -08:00
2013-11-12 13:32:11 -08:00
2013-06-10 10:55:42 -07:00
2014-01-17 12:21:20 -08:00
2014-03-14 14:24:40 -07:00
2014-01-17 12:21:20 -08:00
2013-12-09 14:54:48 -08:00
2014-01-17 12:21:20 -08:00
2013-07-22 16:06:49 -07:00
2014-01-10 10:33:09 -08:00
2014-01-10 10:33:09 -08:00
2014-02-10 10:46:35 -08:00
2014-03-05 15:06:26 -08:00
2014-03-14 14:25:31 -07:00
2013-07-19 09:26:15 -07:00
2014-01-17 12:21:20 -08:00
2014-02-03 12:12:34 -08:00
2013-05-10 10:27:31 -07:00
2013-05-10 10:27:31 -07:00
2013-05-08 15:31:54 -07:00
2014-03-14 14:26:29 -07:00
2014-02-18 15:50:57 -08:00
2013-04-11 17:39:05 -07:00
2013-07-22 16:06:49 -07:00
2014-03-14 14:26:50 -07:00
2013-07-29 12:32:25 -07:00
2014-02-27 14:01:48 -08:00
2014-01-13 11:33:35 -08:00
2013-07-30 08:13:38 -07:00
2013-07-30 08:13:38 -07:00
2014-03-14 14:26:50 -07:00
2013-02-05 16:13:32 -08:00
2013-11-01 07:38:58 -07:00
2014-03-07 15:22:37 -08:00
2014-01-17 12:21:20 -08:00
2013-07-15 10:56:07 -07:00
2014-03-14 14:25:31 -07:00
2014-02-27 14:01:48 -08:00
2013-10-31 13:48:26 -07:00
2014-01-17 12:21:20 -08:00
2014-03-05 15:06:39 -08:00
2014-01-17 12:21:20 -08:00
2014-02-27 14:01:09 -08:00
2013-06-20 16:02:18 -07:00
2014-01-17 12:21:20 -08:00
2013-09-17 11:37:33 -07:00
2013-09-17 11:37:33 -07:00
2014-03-14 14:26:31 -07:00
2014-02-05 10:45:51 -08:00
2013-11-12 09:24:27 -08:00

////////////////////////////////////////////////////////////////

	Git - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public
License version 2 (some parts of it are under different licenses,
compatible with the GPLv2). It was originally written by Linus
Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

Many Git online resources are accessible from http://git-scm.com/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to majordomo@vger.kernel.org. The mailing list archives are
available at http://news.gmane.org/gmane.comp.version-control.git/,
http://marc.info/?l=git and other archival sites.

The maintainer frequently sends the "What's cooking" reports that
list the current status of various development topics to the mailing
list.  The discussion following them give a good reference for
project status, development direction and remaining tasks.
Description
Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documentation/SubmittingPatches procedure for any of your improvements.
Readme 797 MiB
Languages
C 50.1%
Shell 38.4%
Perl 5.1%
Tcl 3.3%
Python 0.8%
Other 2%