Skip to content

Commit 53b2a5f

Browse files
committed
Merge branch 'jk/name-pack-after-byte-representation'
Two packfiles that contain the same set of objects have traditionally been named identically, but that made repacking a repository that is already fully packed without any cruft with a different packing parameter cumbersome. Update the convention to name the packfile after the bytestream representation of the data, not after the set of objects in it. * jk/name-pack-after-byte-representation: pack-objects doc: treat output filename as opaque pack-objects: name pack files after trailer hash sha1write: make buffer const-correct
2 parents 73b0631 + 40a4f5a commit 53b2a5f

File tree

6 files changed

+9
-16
lines changed

6 files changed

+9
-16
lines changed

Documentation/git-pack-objects.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ base-name::
5151
<base-name> to determine the name of the created file.
5252
When this option is used, the two files are written in
5353
<base-name>-<SHA-1>.{pack,idx} files. <SHA-1> is a hash
54-
of the sorted object names to make the resulting filename
55-
based on the pack content, and written to the standard
54+
based on the pack content and is written to the standard
5655
output of the command.
5756

5857
--stdout::

csum-file.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "progress.h"
1212
#include "csum-file.h"
1313

14-
static void flush(struct sha1file *f, void *buf, unsigned int count)
14+
static void flush(struct sha1file *f, const void *buf, unsigned int count)
1515
{
1616
if (0 <= f->check_fd && count) {
1717
unsigned char check_buffer[8192];
@@ -86,13 +86,13 @@ int sha1close(struct sha1file *f, unsigned char *result, unsigned int flags)
8686
return fd;
8787
}
8888

89-
int sha1write(struct sha1file *f, void *buf, unsigned int count)
89+
int sha1write(struct sha1file *f, const void *buf, unsigned int count)
9090
{
9191
while (count) {
9292
unsigned offset = f->offset;
9393
unsigned left = sizeof(f->buffer) - offset;
9494
unsigned nr = count > left ? left : count;
95-
void *data;
95+
const void *data;
9696

9797
if (f->do_crc)
9898
f->crc32 = crc32(f->crc32, buf, nr);

csum-file.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extern struct sha1file *sha1fd(int fd, const char *name);
3434
extern struct sha1file *sha1fd_check(const char *name);
3535
extern struct sha1file *sha1fd_throughput(int fd, const char *name, struct progress *tp);
3636
extern int sha1close(struct sha1file *, unsigned char *, unsigned int);
37-
extern int sha1write(struct sha1file *, void *, unsigned int);
37+
extern int sha1write(struct sha1file *, const void *, unsigned int);
3838
extern void sha1flush(struct sha1file *f);
3939
extern void crc32_begin(struct sha1file *);
4040
extern uint32_t crc32_end(struct sha1file *);

pack-write.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,13 @@ static int need_large_offset(off_t offset, const struct pack_idx_option *opts)
4444
*/
4545
const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects,
4646
int nr_objects, const struct pack_idx_option *opts,
47-
unsigned char *sha1)
47+
const unsigned char *sha1)
4848
{
4949
struct sha1file *f;
5050
struct pack_idx_entry **sorted_by_sha, **list, **last;
5151
off_t last_obj_offset = 0;
5252
uint32_t array[256];
5353
int i, fd;
54-
git_SHA_CTX ctx;
5554
uint32_t index_version;
5655

5756
if (nr_objects) {
@@ -114,9 +113,6 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
114113
}
115114
sha1write(f, array, 256 * 4);
116115

117-
/* compute the SHA1 hash of sorted object names. */
118-
git_SHA1_Init(&ctx);
119-
120116
/*
121117
* Write the actual SHA1 entries..
122118
*/
@@ -128,7 +124,6 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
128124
sha1write(f, &offset, 4);
129125
}
130126
sha1write(f, obj->sha1, 20);
131-
git_SHA1_Update(&ctx, obj->sha1, 20);
132127
if ((opts->flags & WRITE_IDX_STRICT) &&
133128
(i && !hashcmp(list[-2]->sha1, obj->sha1)))
134129
die("The same object %s appears twice in the pack",
@@ -178,7 +173,6 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
178173
sha1write(f, sha1, 20);
179174
sha1close(f, NULL, ((opts->flags & WRITE_IDX_VERIFY)
180175
? CSUM_CLOSE : CSUM_FSYNC));
181-
git_SHA1_Final(sha1, &ctx);
182176
return index_name;
183177
}
184178

pack.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ struct pack_idx_entry {
7676
struct progress;
7777
typedef int (*verify_fn)(const unsigned char*, enum object_type, unsigned long, void*, int*);
7878

79-
extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, unsigned char *sha1);
79+
extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, const unsigned char *sha1);
8080
extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr);
8181
extern int verify_pack_index(struct packed_git *);
8282
extern int verify_pack(struct packed_git *, verify_fn fn, struct progress *, uint32_t);

t/t5302-pack-index.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,11 @@ test_expect_success \
174174
test_expect_success \
175175
'[index v1] 5) pack-objects happily reuses corrupted data' \
176176
'pack4=$(git pack-objects test-4 <obj-list) &&
177-
test -f "test-4-${pack1}.pack"'
177+
test -f "test-4-${pack4}.pack"'
178178

179179
test_expect_success \
180180
'[index v1] 6) newly created pack is BAD !' \
181-
'test_must_fail git verify-pack -v "test-4-${pack1}.pack"'
181+
'test_must_fail git verify-pack -v "test-4-${pack4}.pack"'
182182

183183
test_expect_success \
184184
'[index v2] 1) stream pack to repository' \

0 commit comments

Comments
 (0)