#include "streaming.h"
#include "tree-walk.h"
#include "sha1-array.h"
+#include "packfile.h"
struct batch_options {
int enabled;
void *data);
/*
- * Iterate over loose and packed objects in both the local
+ * Iterate over loose objects in both the local
* repository and any alternates repositories (unless the
* LOCAL_ONLY flag is set).
*/
#define FOR_EACH_OBJECT_LOCAL_ONLY 0x1
-typedef int each_packed_object_fn(const struct object_id *oid,
- struct packed_git *pack,
- uint32_t pos,
- void *data);
extern int for_each_loose_object(each_loose_object_fn, void *, unsigned flags);
-extern int for_each_packed_object(each_packed_object_fn, void *, unsigned flags);
struct object_info {
/* Request */
return 0;
return 1;
}
+
+static int for_each_object_in_pack(struct packed_git *p, each_packed_object_fn cb, void *data)
+{
+ uint32_t i;
+ int r = 0;
+
+ for (i = 0; i < p->num_objects; i++) {
+ struct object_id oid;
+
+ if (!nth_packed_object_oid(&oid, p, i))
+ return error("unable to get sha1 of object %u in %s",
+ i, p->pack_name);
+
+ r = cb(&oid, p, i, data);
+ if (r)
+ break;
+ }
+ return r;
+}
+
+int for_each_packed_object(each_packed_object_fn cb, void *data, unsigned flags)
+{
+ struct packed_git *p;
+ int r = 0;
+ int pack_errors = 0;
+
+ prepare_packed_git();
+ for (p = packed_git; p; p = p->next) {
+ if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local)
+ continue;
+ if (open_pack_index(p)) {
+ pack_errors = 1;
+ continue;
+ }
+ r = for_each_object_in_pack(p, cb, data);
+ if (r)
+ break;
+ }
+ return r ? r : pack_errors;
+}
extern int has_pack_index(const unsigned char *sha1);
+/*
+ * Iterate over packed objects in both the local
+ * repository and any alternates repositories (unless the
+ * FOR_EACH_OBJECT_LOCAL_ONLY flag, defined in cache.h, is set).
+ */
+typedef int each_packed_object_fn(const struct object_id *oid,
+ struct packed_git *pack,
+ uint32_t pos,
+ void *data);
+extern int for_each_packed_object(each_packed_object_fn, void *, unsigned flags);
+
#endif
#include "cache-tree.h"
#include "progress.h"
#include "list-objects.h"
+#include "packfile.h"
struct connectivity_progress {
struct progress *progress;
return foreach_alt_odb(loose_from_alt_odb, &alt);
}
-static int for_each_object_in_pack(struct packed_git *p, each_packed_object_fn cb, void *data)
-{
- uint32_t i;
- int r = 0;
-
- for (i = 0; i < p->num_objects; i++) {
- struct object_id oid;
-
- if (!nth_packed_object_oid(&oid, p, i))
- return error("unable to get sha1 of object %u in %s",
- i, p->pack_name);
-
- r = cb(&oid, p, i, data);
- if (r)
- break;
- }
- return r;
-}
-
-int for_each_packed_object(each_packed_object_fn cb, void *data, unsigned flags)
-{
- struct packed_git *p;
- int r = 0;
- int pack_errors = 0;
-
- prepare_packed_git();
- for (p = packed_git; p; p = p->next) {
- if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local)
- continue;
- if (open_pack_index(p)) {
- pack_errors = 1;
- continue;
- }
- r = for_each_object_in_pack(p, cb, data);
- if (r)
- break;
- }
- return r ? r : pack_errors;
-}
-
static int check_stream_sha1(git_zstream *stream,
const char *hdr,
unsigned long size,