author | Junio C Hamano <junkio@cox.net> | |
Mon, 24 Apr 2006 22:12:42 +0000 (15:12 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 24 Apr 2006 22:12:42 +0000 (15:12 -0700) | ||
commit | dd0c34c46bdda0c20fd92d00516e711a4c9f7837 | |
tree | d2c8809120d3a174089775e6bd60dd104f187bde | tree | snapshot |
parent | 17448209f5441718c69642871c85a80f00d12b43 | commit | diff |
cache-tree: protect against "git prune".
We reused the cache-tree data without verifying the tree object
still exists. Recompute in cache_tree_update() an otherwise
valid cache-tree entry when the tree object disappeared.
This is not usually a problem, but theoretically without this
fix things can break when the user does something like this:
- read-index from a side branch
- write-tree the result
- remove the side branch with "git branch -D"
- remove the unreachable objects with "git prune"
- write-tree what is in the index.
Signed-off-by: Junio C Hamano <junkio@cox.net>
We reused the cache-tree data without verifying the tree object
still exists. Recompute in cache_tree_update() an otherwise
valid cache-tree entry when the tree object disappeared.
This is not usually a problem, but theoretically without this
fix things can break when the user does something like this:
- read-index from a side branch
- write-tree the result
- remove the side branch with "git branch -D"
- remove the unreachable objects with "git prune"
- write-tree what is in the index.
Signed-off-by: Junio C Hamano <junkio@cox.net>
cache-tree.c | diff | blob | history |