9 #include "fetch-pack.h"
11 #include "run-command.h"
13 static int transfer_unpack_limit
= -1;
14 static int fetch_unpack_limit
= -1;
15 static int unpack_limit
= 100;
16 static int prefer_ofs_delta
= 1;
17 static int no_done
= 0;
18 static struct fetch_pack_args args
= {
19 /* .uploadpack = */ "git-upload-pack",
22 static const char fetch_pack_usage
[] =
23 "git fetch-pack [--all] [--quiet|-q] [--keep|-k] [--thin] [--include-tag] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [-v] [<host>:]<directory> [<refs>...]";
25 #define COMPLETE (1U << 0)
26 #define COMMON (1U << 1)
27 #define COMMON_REF (1U << 2)
28 #define SEEN (1U << 3)
29 #define POPPED (1U << 4)
34 * After sending this many "have"s if we do not get any new ACK , we
35 * give up traversing our history.
37 #define MAX_IN_VAIN 256
39 static struct commit_list
*rev_list
;
40 static int non_common_revs
, multi_ack
, use_sideband
;
42 static void rev_list_push(struct commit
*commit
, int mark
)
44 if (!(commit
->object
.flags
& mark
)) {
45 commit
->object
.flags
|= mark
;
47 if (!(commit
->object
.parsed
))
48 if (parse_commit(commit
))
51 commit_list_insert_by_date(commit
, &rev_list
);
53 if (!(commit
->object
.flags
& COMMON
))
58 static int rev_list_insert_ref(const char *path
, const unsigned char *sha1
, int flag
, void *cb_data
)
60 struct object
*o
= deref_tag(parse_object(sha1
), path
, 0);
62 if (o
&& o
->type
== OBJ_COMMIT
)
63 rev_list_push((struct commit
*)o
, SEEN
);
68 static int clear_marks(const char *path
, const unsigned char *sha1
, int flag
, void *cb_data
)
70 struct object
*o
= deref_tag(parse_object(sha1
), path
, 0);
72 if (o
&& o
->type
== OBJ_COMMIT
)
73 clear_commit_marks((struct commit
*)o
,
74 COMMON
| COMMON_REF
| SEEN
| POPPED
);
79 This function marks a rev and its ancestors as common.
80 In some cases, it is desirable to mark only the ancestors (for example
81 when only the server does not yet know that they are common).
84 static void mark_common(struct commit
*commit
,
85 int ancestors_only
, int dont_parse
)
87 if (commit
!= NULL
&& !(commit
->object
.flags
& COMMON
)) {
88 struct object
*o
= (struct object
*)commit
;
93 if (!(o
->flags
& SEEN
))
94 rev_list_push(commit
, SEEN
);
96 struct commit_list
*parents
;
98 if (!ancestors_only
&& !(o
->flags
& POPPED
))
100 if (!o
->parsed
&& !dont_parse
)
101 if (parse_commit(commit
))
104 for (parents
= commit
->parents
;
106 parents
= parents
->next
)
107 mark_common(parents
->item
, 0, dont_parse
);
113 Get the next rev to send, ignoring the common.
116 static const unsigned char *get_rev(void)
118 struct commit
*commit
= NULL
;
120 while (commit
== NULL
) {
122 struct commit_list
*parents
;
124 if (rev_list
== NULL
|| non_common_revs
== 0)
127 commit
= rev_list
->item
;
128 if (!commit
->object
.parsed
)
129 parse_commit(commit
);
130 parents
= commit
->parents
;
132 commit
->object
.flags
|= POPPED
;
133 if (!(commit
->object
.flags
& COMMON
))
136 if (commit
->object
.flags
& COMMON
) {
137 /* do not send "have", and ignore ancestors */
139 mark
= COMMON
| SEEN
;
140 } else if (commit
->object
.flags
& COMMON_REF
)
141 /* send "have", and ignore ancestors */
142 mark
= COMMON
| SEEN
;
144 /* send "have", also for its ancestors */
148 if (!(parents
->item
->object
.flags
& SEEN
))
149 rev_list_push(parents
->item
, mark
);
151 mark_common(parents
->item
, 1, 0);
152 parents
= parents
->next
;
155 rev_list
= rev_list
->next
;
158 return commit
->object
.sha1
;
169 static void consume_shallow_list(int fd
)
171 if (args
.stateless_rpc
&& args
.depth
> 0) {
172 /* If we sent a depth we will get back "duplicate"
173 * shallow and unshallow commands every time there
174 * is a block of have lines exchanged.
177 while (packet_read_line(fd
, line
, sizeof(line
))) {
178 if (!prefixcmp(line
, "shallow "))
180 if (!prefixcmp(line
, "unshallow "))
182 die("git fetch-pack: expected shallow list");
187 static enum ack_type
get_ack(int fd
, unsigned char *result_sha1
)
189 static char line
[1000];
190 int len
= packet_read_line(fd
, line
, sizeof(line
));
193 die("git fetch-pack: expected ACK/NAK, got EOF");
194 if (line
[len
-1] == '\n')
196 if (!strcmp(line
, "NAK"))
198 if (!prefixcmp(line
, "ACK ")) {
199 if (!get_sha1_hex(line
+4, result_sha1
)) {
200 if (strstr(line
+45, "continue"))
202 if (strstr(line
+45, "common"))
204 if (strstr(line
+45, "ready"))
209 die("git fetch_pack: expected ACK/NAK, got '%s'", line
);
212 static void send_request(int fd
, struct strbuf
*buf
)
214 if (args
.stateless_rpc
) {
215 send_sideband(fd
, -1, buf
->buf
, buf
->len
, LARGE_PACKET_MAX
);
218 safe_write(fd
, buf
->buf
, buf
->len
);
221 static int find_common(int fd
[2], unsigned char *result_sha1
,
225 int count
= 0, flushes
= 0, retval
;
226 const unsigned char *sha1
;
227 unsigned in_vain
= 0;
228 int got_continue
= 0;
230 struct strbuf req_buf
= STRBUF_INIT
;
231 size_t state_len
= 0;
233 if (args
.stateless_rpc
&& multi_ack
== 1)
234 die("--stateless-rpc requires multi_ack_detailed");
236 for_each_ref(clear_marks
, NULL
);
239 for_each_ref(rev_list_insert_ref
, NULL
);
242 for ( ; refs
; refs
= refs
->next
) {
243 unsigned char *remote
= refs
->old_sha1
;
244 const char *remote_hex
;
248 * If that object is complete (i.e. it is an ancestor of a
249 * local ref), we tell them we have it but do not have to
250 * tell them about its ancestors, which they already know
253 * We use lookup_object here because we are only
254 * interested in the case we *know* the object is
255 * reachable and we have already scanned it.
257 if (((o
= lookup_object(remote
)) != NULL
) &&
258 (o
->flags
& COMPLETE
)) {
262 remote_hex
= sha1_to_hex(remote
);
264 struct strbuf c
= STRBUF_INIT
;
265 if (multi_ack
== 2) strbuf_addstr(&c
, " multi_ack_detailed");
266 if (multi_ack
== 1) strbuf_addstr(&c
, " multi_ack");
267 if (no_done
) strbuf_addstr(&c
, " no-done");
268 if (use_sideband
== 2) strbuf_addstr(&c
, " side-band-64k");
269 if (use_sideband
== 1) strbuf_addstr(&c
, " side-band");
270 if (args
.use_thin_pack
) strbuf_addstr(&c
, " thin-pack");
271 if (args
.no_progress
) strbuf_addstr(&c
, " no-progress");
272 if (args
.include_tag
) strbuf_addstr(&c
, " include-tag");
273 if (prefer_ofs_delta
) strbuf_addstr(&c
, " ofs-delta");
274 packet_buf_write(&req_buf
, "want %s%s\n", remote_hex
, c
.buf
);
277 packet_buf_write(&req_buf
, "want %s\n", remote_hex
);
282 strbuf_release(&req_buf
);
287 if (is_repository_shallow())
288 write_shallow_commits(&req_buf
, 1);
290 packet_buf_write(&req_buf
, "deepen %d", args
.depth
);
291 packet_buf_flush(&req_buf
);
292 state_len
= req_buf
.len
;
294 if (args
.depth
> 0) {
296 unsigned char sha1
[20];
298 send_request(fd
[1], &req_buf
);
299 while (packet_read_line(fd
[0], line
, sizeof(line
))) {
300 if (!prefixcmp(line
, "shallow ")) {
301 if (get_sha1_hex(line
+ 8, sha1
))
302 die("invalid shallow line: %s", line
);
303 register_shallow(sha1
);
306 if (!prefixcmp(line
, "unshallow ")) {
307 if (get_sha1_hex(line
+ 10, sha1
))
308 die("invalid unshallow line: %s", line
);
309 if (!lookup_object(sha1
))
310 die("object not found: %s", line
);
311 /* make sure that it is parsed as shallow */
312 if (!parse_object(sha1
))
313 die("error in object: %s", line
);
314 if (unregister_shallow(sha1
))
315 die("no shallow found: %s", line
);
318 die("expected shallow/unshallow, got %s", line
);
320 } else if (!args
.stateless_rpc
)
321 send_request(fd
[1], &req_buf
);
323 if (!args
.stateless_rpc
) {
324 /* If we aren't using the stateless-rpc interface
325 * we don't need to retain the headers.
327 strbuf_setlen(&req_buf
, 0);
333 while ((sha1
= get_rev())) {
334 packet_buf_write(&req_buf
, "have %s\n", sha1_to_hex(sha1
));
336 fprintf(stderr
, "have %s\n", sha1_to_hex(sha1
));
338 if (!(31 & ++count
)) {
341 packet_buf_flush(&req_buf
);
342 send_request(fd
[1], &req_buf
);
343 strbuf_setlen(&req_buf
, state_len
);
347 * We keep one window "ahead" of the other side, and
348 * will wait for an ACK only on the next one
350 if (!args
.stateless_rpc
&& count
== 32)
353 consume_shallow_list(fd
[0]);
355 ack
= get_ack(fd
[0], result_sha1
);
356 if (args
.verbose
&& ack
)
357 fprintf(stderr
, "got ack %d %s\n", ack
,
358 sha1_to_hex(result_sha1
));
368 struct commit
*commit
=
369 lookup_commit(result_sha1
);
370 if (args
.stateless_rpc
372 && !(commit
->object
.flags
& COMMON
)) {
373 /* We need to replay the have for this object
374 * on the next RPC request so the peer knows
375 * it is in common with us.
377 const char *hex
= sha1_to_hex(result_sha1
);
378 packet_buf_write(&req_buf
, "have %s\n", hex
);
379 state_len
= req_buf
.len
;
381 mark_common(commit
, 0, 1);
385 if (ack
== ACK_ready
) {
394 if (got_continue
&& MAX_IN_VAIN
< in_vain
) {
396 fprintf(stderr
, "giving up\n");
402 if (!got_ready
|| !no_done
) {
403 packet_buf_write(&req_buf
, "done\n");
404 send_request(fd
[1], &req_buf
);
407 fprintf(stderr
, "done\n");
412 strbuf_release(&req_buf
);
414 consume_shallow_list(fd
[0]);
415 while (flushes
|| multi_ack
) {
416 int ack
= get_ack(fd
[0], result_sha1
);
419 fprintf(stderr
, "got ack (%d) %s\n", ack
,
420 sha1_to_hex(result_sha1
));
428 /* it is no error to fetch into a completely empty repo */
429 return count
? retval
: 0;
432 static struct commit_list
*complete
;
434 static int mark_complete(const char *path
, const unsigned char *sha1
, int flag
, void *cb_data
)
436 struct object
*o
= parse_object(sha1
);
438 while (o
&& o
->type
== OBJ_TAG
) {
439 struct tag
*t
= (struct tag
*) o
;
441 break; /* broken repository */
442 o
->flags
|= COMPLETE
;
443 o
= parse_object(t
->tagged
->sha1
);
445 if (o
&& o
->type
== OBJ_COMMIT
) {
446 struct commit
*commit
= (struct commit
*)o
;
447 commit
->object
.flags
|= COMPLETE
;
448 commit_list_insert_by_date(commit
, &complete
);
453 static void mark_recent_complete_commits(unsigned long cutoff
)
455 while (complete
&& cutoff
<= complete
->item
->date
) {
457 fprintf(stderr
, "Marking %s as complete\n",
458 sha1_to_hex(complete
->item
->object
.sha1
));
459 pop_most_recent_commit(&complete
, COMPLETE
);
463 static void filter_refs(struct ref
**refs
, int nr_match
, char **match
)
465 struct ref
**return_refs
;
466 struct ref
*newlist
= NULL
;
467 struct ref
**newtail
= &newlist
;
468 struct ref
*ref
, *next
;
469 struct ref
*fastarray
[32];
471 if (nr_match
&& !args
.fetch_all
) {
472 if (ARRAY_SIZE(fastarray
) < nr_match
)
473 return_refs
= xcalloc(nr_match
, sizeof(struct ref
*));
475 return_refs
= fastarray
;
476 memset(return_refs
, 0, sizeof(struct ref
*) * nr_match
);
482 for (ref
= *refs
; ref
; ref
= next
) {
484 if (!memcmp(ref
->name
, "refs/", 5) &&
485 check_ref_format(ref
->name
+ 5))
487 else if (args
.fetch_all
&&
488 (!args
.depth
|| prefixcmp(ref
->name
, "refs/tags/") )) {
491 newtail
= &ref
->next
;
495 int order
= path_match(ref
->name
, nr_match
, match
);
497 return_refs
[order
-1] = ref
;
498 continue; /* we will link it later */
504 if (!args
.fetch_all
) {
506 for (i
= 0; i
< nr_match
; i
++) {
507 ref
= return_refs
[i
];
511 newtail
= &ref
->next
;
514 if (return_refs
!= fastarray
)
520 static int everything_local(struct ref
**refs
, int nr_match
, char **match
)
524 unsigned long cutoff
= 0;
526 save_commit_buffer
= 0;
528 for (ref
= *refs
; ref
; ref
= ref
->next
) {
531 o
= parse_object(ref
->old_sha1
);
535 /* We already have it -- which may mean that we were
536 * in sync with the other side at some time after
537 * that (it is OK if we guess wrong here).
539 if (o
->type
== OBJ_COMMIT
) {
540 struct commit
*commit
= (struct commit
*)o
;
541 if (!cutoff
|| cutoff
< commit
->date
)
542 cutoff
= commit
->date
;
547 for_each_ref(mark_complete
, NULL
);
549 mark_recent_complete_commits(cutoff
);
553 * Mark all complete remote refs as common refs.
554 * Don't mark them common yet; the server has to be told so first.
556 for (ref
= *refs
; ref
; ref
= ref
->next
) {
557 struct object
*o
= deref_tag(lookup_object(ref
->old_sha1
),
560 if (!o
|| o
->type
!= OBJ_COMMIT
|| !(o
->flags
& COMPLETE
))
563 if (!(o
->flags
& SEEN
)) {
564 rev_list_push((struct commit
*)o
, COMMON_REF
| SEEN
);
566 mark_common((struct commit
*)o
, 1, 1);
570 filter_refs(refs
, nr_match
, match
);
572 for (retval
= 1, ref
= *refs
; ref
; ref
= ref
->next
) {
573 const unsigned char *remote
= ref
->old_sha1
;
574 unsigned char local
[20];
577 o
= lookup_object(remote
);
578 if (!o
|| !(o
->flags
& COMPLETE
)) {
583 "want %s (%s)\n", sha1_to_hex(remote
),
588 hashcpy(ref
->new_sha1
, local
);
592 "already have %s (%s)\n", sha1_to_hex(remote
),
598 static int sideband_demux(int in
, int out
, void *data
)
602 int ret
= recv_sideband("fetch-pack", xd
[0], out
);
607 static int get_pack(int xd
[2], char **pack_lockfile
)
610 const char *argv
[20];
614 int do_keep
= args
.keep_pack
;
615 struct child_process cmd
;
617 memset(&demux
, 0, sizeof(demux
));
619 /* xd[] is talking with upload-pack; subprocess reads from
620 * xd[0], spits out band#2 to stderr, and feeds us band#1
621 * through demux->out.
623 demux
.proc
= sideband_demux
;
626 if (start_async(&demux
))
627 die("fetch-pack: unable to fork off sideband"
633 memset(&cmd
, 0, sizeof(cmd
));
637 if (!args
.keep_pack
&& unpack_limit
) {
638 struct pack_header header
;
640 if (read_pack_header(demux
.out
, &header
))
641 die("protocol error: bad pack header");
642 snprintf(hdr_arg
, sizeof(hdr_arg
),
643 "--pack_header=%"PRIu32
",%"PRIu32
,
644 ntohl(header
.hdr_version
), ntohl(header
.hdr_entries
));
645 if (ntohl(header
.hdr_entries
) < unpack_limit
)
654 *av
++ = "index-pack";
656 if (!args
.quiet
&& !args
.no_progress
)
658 if (args
.use_thin_pack
)
659 *av
++ = "--fix-thin";
660 if (args
.lock_pack
|| unpack_limit
) {
661 int s
= sprintf(keep_arg
,
662 "--keep=fetch-pack %"PRIuMAX
" on ", (uintmax_t) getpid());
663 if (gethostname(keep_arg
+ s
, sizeof(keep_arg
) - s
))
664 strcpy(keep_arg
+ s
, "localhost");
669 *av
++ = "unpack-objects";
679 if (start_command(&cmd
))
680 die("fetch-pack: unable to fork off %s", argv
[0]);
681 if (do_keep
&& pack_lockfile
) {
682 *pack_lockfile
= index_pack_lockfile(cmd
.out
);
686 if (finish_command(&cmd
))
687 die("%s failed", argv
[0]);
688 if (use_sideband
&& finish_async(&demux
))
689 die("error in sideband demultiplexer");
693 static struct ref
*do_fetch_pack(int fd
[2],
694 const struct ref
*orig_ref
,
697 char **pack_lockfile
)
699 struct ref
*ref
= copy_ref_list(orig_ref
);
700 unsigned char sha1
[20];
702 if (is_repository_shallow() && !server_supports("shallow"))
703 die("Server does not support shallow clients");
704 if (server_supports("multi_ack_detailed")) {
706 fprintf(stderr
, "Server supports multi_ack_detailed\n");
708 if (server_supports("no-done")) {
710 fprintf(stderr
, "Server supports no-done\n");
711 if (args
.stateless_rpc
)
715 else if (server_supports("multi_ack")) {
717 fprintf(stderr
, "Server supports multi_ack\n");
720 if (server_supports("side-band-64k")) {
722 fprintf(stderr
, "Server supports side-band-64k\n");
725 else if (server_supports("side-band")) {
727 fprintf(stderr
, "Server supports side-band\n");
730 if (server_supports("ofs-delta")) {
732 fprintf(stderr
, "Server supports ofs-delta\n");
734 prefer_ofs_delta
= 0;
735 if (everything_local(&ref
, nr_match
, match
)) {
739 if (find_common(fd
, sha1
, ref
) < 0)
741 /* When cloning, it is not unusual to have
744 warning("no common commits");
746 if (args
.stateless_rpc
)
748 if (get_pack(fd
, pack_lockfile
))
749 die("git fetch-pack: fetch failed.");
755 static int remove_duplicates(int nr_heads
, char **heads
)
759 for (src
= dst
= 0; src
< nr_heads
; src
++) {
760 /* If heads[src] is different from any of
761 * heads[0..dst], push it in.
764 for (i
= 0; i
< dst
; i
++) {
765 if (!strcmp(heads
[i
], heads
[src
]))
771 heads
[dst
] = heads
[src
];
777 static int fetch_pack_config(const char *var
, const char *value
, void *cb
)
779 if (strcmp(var
, "fetch.unpacklimit") == 0) {
780 fetch_unpack_limit
= git_config_int(var
, value
);
784 if (strcmp(var
, "transfer.unpacklimit") == 0) {
785 transfer_unpack_limit
= git_config_int(var
, value
);
789 if (strcmp(var
, "repack.usedeltabaseoffset") == 0) {
790 prefer_ofs_delta
= git_config_bool(var
, value
);
794 return git_default_config(var
, value
, cb
);
797 static struct lock_file lock
;
799 static void fetch_pack_setup(void)
801 static int did_setup
;
804 git_config(fetch_pack_config
, NULL
);
805 if (0 <= transfer_unpack_limit
)
806 unpack_limit
= transfer_unpack_limit
;
807 else if (0 <= fetch_unpack_limit
)
808 unpack_limit
= fetch_unpack_limit
;
812 int cmd_fetch_pack(int argc
, const char **argv
, const char *prefix
)
814 int i
, ret
, nr_heads
;
815 struct ref
*ref
= NULL
;
816 char *dest
= NULL
, **heads
;
818 char *pack_lockfile
= NULL
;
819 char **pack_lockfile_ptr
= NULL
;
820 struct child_process
*conn
;
824 for (i
= 1; i
< argc
; i
++) {
825 const char *arg
= argv
[i
];
828 if (!prefixcmp(arg
, "--upload-pack=")) {
829 args
.uploadpack
= arg
+ 14;
832 if (!prefixcmp(arg
, "--exec=")) {
833 args
.uploadpack
= arg
+ 7;
836 if (!strcmp("--quiet", arg
) || !strcmp("-q", arg
)) {
840 if (!strcmp("--keep", arg
) || !strcmp("-k", arg
)) {
841 args
.lock_pack
= args
.keep_pack
;
845 if (!strcmp("--thin", arg
)) {
846 args
.use_thin_pack
= 1;
849 if (!strcmp("--include-tag", arg
)) {
850 args
.include_tag
= 1;
853 if (!strcmp("--all", arg
)) {
857 if (!strcmp("-v", arg
)) {
861 if (!prefixcmp(arg
, "--depth=")) {
862 args
.depth
= strtol(arg
+ 8, NULL
, 0);
865 if (!strcmp("--no-progress", arg
)) {
866 args
.no_progress
= 1;
869 if (!strcmp("--stateless-rpc", arg
)) {
870 args
.stateless_rpc
= 1;
873 if (!strcmp("--lock-pack", arg
)) {
875 pack_lockfile_ptr
= &pack_lockfile
;
878 usage(fetch_pack_usage
);
881 heads
= (char **)(argv
+ i
+ 1);
882 nr_heads
= argc
- i
- 1;
886 usage(fetch_pack_usage
);
888 if (args
.stateless_rpc
) {
893 conn
= git_connect(fd
, (char *)dest
, args
.uploadpack
,
894 args
.verbose
? CONNECT_VERBOSE
: 0);
897 get_remote_heads(fd
[0], &ref
, 0, NULL
, 0, NULL
);
899 ref
= fetch_pack(&args
, fd
, conn
, ref
, dest
,
900 nr_heads
, heads
, pack_lockfile_ptr
);
902 printf("lock %s\n", pack_lockfile
);
907 if (finish_connect(conn
))
911 if (!ret
&& nr_heads
) {
912 /* If the heads to pull were given, we should have
913 * consumed all of them by matching the remote.
914 * Otherwise, 'git fetch remote no-such-ref' would
915 * silently succeed without issuing an error.
917 for (i
= 0; i
< nr_heads
; i
++)
918 if (heads
[i
] && heads
[i
][0]) {
919 error("no such remote ref %s", heads
[i
]);
925 sha1_to_hex(ref
->old_sha1
), ref
->name
);
932 struct ref
*fetch_pack(struct fetch_pack_args
*my_args
,
933 int fd
[], struct child_process
*conn
,
934 const struct ref
*ref
,
938 char **pack_lockfile
)
944 if (&args
!= my_args
)
945 memcpy(&args
, my_args
, sizeof(args
));
946 if (args
.depth
> 0) {
947 if (stat(git_path("shallow"), &st
))
951 if (heads
&& nr_heads
)
952 nr_heads
= remove_duplicates(nr_heads
, heads
);
955 die("no matching remote head");
957 ref_cpy
= do_fetch_pack(fd
, ref
, nr_heads
, heads
, pack_lockfile
);
959 if (args
.depth
> 0) {
960 struct cache_time mtime
;
961 struct strbuf sb
= STRBUF_INIT
;
962 char *shallow
= git_path("shallow");
965 mtime
.sec
= st
.st_mtime
;
966 mtime
.nsec
= ST_MTIME_NSEC(st
);
967 if (stat(shallow
, &st
)) {
969 die("shallow file was removed during fetch");
970 } else if (st
.st_mtime
!= mtime
.sec
972 || ST_MTIME_NSEC(st
) != mtime
.nsec
975 die("shallow file was changed during fetch");
977 fd
= hold_lock_file_for_update(&lock
, shallow
,
979 if (!write_shallow_commits(&sb
, 0)
980 || write_in_full(fd
, sb
.buf
, sb
.len
) != sb
.len
) {
981 unlink_or_warn(shallow
);
982 rollback_lock_file(&lock
);
984 commit_lock_file(&lock
);
989 reprepare_packed_git();