projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add more header dependencies.
[git.git]
/
update-cache.c
diff --git
a/update-cache.c
b/update-cache.c
index
134ba74
..
68d2f95
100644
(file)
--- a/
update-cache.c
+++ b/
update-cache.c
@@
-14,13
+14,13
@@
*/
static int allow_add = 0, allow_remove = 0;
*/
static int allow_add = 0, allow_remove = 0;
-static int index_fd(
const char *path, int namelen, struct cache_entry *ce
, int fd, struct stat *st)
+static int index_fd(
unsigned char *sha1
, int fd, struct stat *st)
{
z_stream stream;
unsigned long size = st->st_size;
{
z_stream stream;
unsigned long size = st->st_size;
- int max_out_bytes =
namelen +
size + 200;
+ int max_out_bytes = size + 200;
void *out = malloc(max_out_bytes);
void *out = malloc(max_out_bytes);
- void *metadata = malloc(
namelen +
200);
+ void *metadata = malloc(200);
void *in;
SHA_CTX c;
void *in;
SHA_CTX c;
@@
-56,9
+56,9
@@
static int index_fd(const char *path, int namelen, struct cache_entry *ce, int f
SHA1_Init(&c);
SHA1_Update(&c, out, stream.total_out);
SHA1_Init(&c);
SHA1_Update(&c, out, stream.total_out);
- SHA1_Final(
ce->
sha1, &c);
+ SHA1_Final(sha1, &c);
- return write_sha1_buffer(
ce->
sha1, out, stream.total_out);
+ return write_sha1_buffer(sha1, out, stream.total_out);
}
/*
}
/*
@@
-106,10
+106,10
@@
static int add_file_to_cache(char *path)
memset(ce, 0, size);
memcpy(ce->name, path, namelen);
fill_stat_cache_info(ce, &st);
memset(ce, 0, size);
memcpy(ce->name, path, namelen);
fill_stat_cache_info(ce, &st);
- ce->ce_mode =
htonl
(st.st_mode);
+ ce->ce_mode =
create_ce_mode
(st.st_mode);
ce->ce_flags = htons(namelen);
ce->ce_flags = htons(namelen);
- if (index_fd(
path, namelen, ce
, fd, &st) < 0)
+ if (index_fd(
ce->sha1
, fd, &st) < 0)
return -1;
return add_cache_entry(ce, allow_add);
return -1;
return add_cache_entry(ce, allow_add);
@@
-196,9
+196,18
@@
static void refresh_cache(void)
int i;
for (i = 0; i < active_nr; i++) {
int i;
for (i = 0; i < active_nr; i++) {
- struct cache_entry *ce = active_cache[i];
- struct cache_entry *new = refresh_entry(ce);
+ struct cache_entry *ce, *new;
+ ce = active_cache[i];
+ if (ce_stage(ce)) {
+ printf("%s: needs merge\n", ce->name);
+ while ((i < active_nr) &&
+ ! strcmp(active_cache[i]->name, ce->name))
+ i++;
+ i--;
+ continue;
+ }
+ new = refresh_entry(ce);
if (!new) {
printf("%s: needs update\n", ce->name);
continue;
if (!new) {
printf("%s: needs update\n", ce->name);
continue;
@@
-244,13
+253,10
@@
static int add_cacheinfo(char *arg1, char *arg2, char *arg3)
if (sscanf(arg1, "%o", &mode) != 1)
return -1;
if (sscanf(arg1, "%o", &mode) != 1)
return -1;
- printf("got mode %o\n", mode);
if (get_sha1_hex(arg2, sha1))
return -1;
if (get_sha1_hex(arg2, sha1))
return -1;
- printf("got sha1 %s\n", sha1_to_hex(sha1));
if (!verify_path(arg3))
return -1;
if (!verify_path(arg3))
return -1;
- printf("got path %s\n", arg3);
len = strlen(arg3);
size = cache_entry_size(len);
len = strlen(arg3);
size = cache_entry_size(len);
@@
-260,7
+266,7
@@
static int add_cacheinfo(char *arg1, char *arg2, char *arg3)
memcpy(ce->sha1, sha1, 20);
memcpy(ce->name, arg3, len);
ce->ce_flags = htons(len);
memcpy(ce->sha1, sha1, 20);
memcpy(ce->name, arg3, len);
ce->ce_flags = htons(len);
- ce->ce_mode =
htonl
(mode);
+ ce->ce_mode =
create_ce_mode
(mode);
return add_cache_entry(ce, allow_add);
}
return add_cache_entry(ce, allow_add);
}