зеркало из https://github.com/microsoft/git.git
Merge branch 'maint'
* maint: Prepare for 1.6.3.2 fix cat-file usage message and documentation fetch: report ref storage DF errors more accurately lock_ref: inform callers of unavailable ref merge-options.txt: Clarify merge --squash Conflicts: RelNotes
This commit is contained in:
Коммит
23807fa008
|
@ -0,0 +1,51 @@
|
|||
GIT v1.6.3.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.1
|
||||
--------------------
|
||||
|
||||
* A few codepaths picked up the first few bytes from an sha1[] by
|
||||
casting the (char *) pointer to (int *); GCC 4.4 did not like this,
|
||||
and aborted compilation.
|
||||
|
||||
* http-push had a small use-after-free bug.
|
||||
|
||||
* command completion code in bash did not reliably detect that we are
|
||||
in a bare repository.
|
||||
|
||||
* "git for-each-ref" had a segfaulting bug when dealing with a tag object
|
||||
created by an ancient git.
|
||||
|
||||
* Some unlink(2) failures went undiagnosed.
|
||||
|
||||
* The "recursive" merge strategy misbehaved when faced rename/delete
|
||||
conflicts while coming up with an intermediate merge base.
|
||||
|
||||
* GIT_TRACE mechanism segfaulted when tracing a shell-quoted aliases.
|
||||
|
||||
* "git add ." in an empty directory complained that pathspec "." did not
|
||||
match anything, which may be technically correct, but not useful. We
|
||||
silently make it a no-op now.
|
||||
|
||||
* "git format-patch -k" still added patch numbers if format.numbered
|
||||
configuration was set.
|
||||
|
||||
* OpenBSD also uses st_ctimspec in "struct stat", instead of "st_ctim".
|
||||
|
||||
* With NO_CROSS_DIRECTORY_HARDLINKS, "make install" can be told not to
|
||||
create hardlinks between $(gitexecdir)/git-$builtin_commands and
|
||||
$(bindir)/git.
|
||||
|
||||
* "git push" was converting OFS_DELTA pack representation into less
|
||||
efficient REF_DELTA representation unconditionally upon transfer,
|
||||
making the transferred data unnecessarily larger.
|
||||
|
||||
Many other general usability updates around help text, diagnostic messages
|
||||
and documentation are included as well.
|
||||
|
||||
---
|
||||
exec >/var/tmp/1
|
||||
O=v1.6.3.1-51-g2a1feb9
|
||||
echo O=$(git describe maint)
|
||||
git shortlog --no-merges $O..maint
|
||||
|
|
@ -9,8 +9,8 @@ git-cat-file - Provide content or type and size information for repository objec
|
|||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git cat-file' [-t | -s | -e | -p | <type>] <object>
|
||||
'git cat-file' [--batch | --batch-check] < <list-of-objects>
|
||||
'git cat-file' (-t | -s | -e | -p | <type>) <object>
|
||||
'git cat-file' (--batch | --batch-check) < <list-of-objects>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
|
|
@ -39,7 +39,8 @@
|
|||
|
||||
--squash::
|
||||
Produce the working tree and index state as if a real
|
||||
merge happened, but do not actually make a commit or
|
||||
merge happened (except for the merge information),
|
||||
but do not actually make a commit or
|
||||
move the `HEAD`, nor record `$GIT_DIR/MERGE_HEAD` to
|
||||
cause the next `git commit` command to create a merge
|
||||
commit. This allows you to create a single commit on
|
||||
|
|
|
@ -201,8 +201,8 @@ static int batch_objects(int print_contents)
|
|||
}
|
||||
|
||||
static const char * const cat_file_usage[] = {
|
||||
"git cat-file [-t|-s|-e|-p|<type>] <sha1>",
|
||||
"git cat-file [--batch|--batch-check] < <list_of_sha1s>",
|
||||
"git cat-file (-t|-s|-e|-p|<type>) <object>",
|
||||
"git cat-file (--batch|--batch-check) < <list_of_objects>",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
@ -167,6 +167,9 @@ static struct ref *get_ref_map(struct transport *transport,
|
|||
return ref_map;
|
||||
}
|
||||
|
||||
#define STORE_REF_ERROR_OTHER 1
|
||||
#define STORE_REF_ERROR_DF_CONFLICT 2
|
||||
|
||||
static int s_update_ref(const char *action,
|
||||
struct ref *ref,
|
||||
int check_old)
|
||||
|
@ -181,9 +184,11 @@ static int s_update_ref(const char *action,
|
|||
lock = lock_any_ref_for_update(ref->name,
|
||||
check_old ? ref->old_sha1 : NULL, 0);
|
||||
if (!lock)
|
||||
return 2;
|
||||
return errno == ENOTDIR ? STORE_REF_ERROR_DF_CONFLICT :
|
||||
STORE_REF_ERROR_OTHER;
|
||||
if (write_ref_sha1(lock, ref->new_sha1, msg) < 0)
|
||||
return 2;
|
||||
return errno == ENOTDIR ? STORE_REF_ERROR_DF_CONFLICT :
|
||||
STORE_REF_ERROR_OTHER;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -386,7 +391,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
|
|||
}
|
||||
free(url);
|
||||
fclose(fp);
|
||||
if (rc & 2)
|
||||
if (rc & STORE_REF_ERROR_DF_CONFLICT)
|
||||
error("some local refs could not be updated; try running\n"
|
||||
" 'git remote prune %s' to remove any old, conflicting "
|
||||
"branches", remote_name);
|
||||
|
|
4
refs.c
4
refs.c
|
@ -893,8 +893,10 @@ static struct ref_lock *lock_ref_sha1_basic(const char *ref, const unsigned char
|
|||
* name is a proper prefix of our refname.
|
||||
*/
|
||||
if (missing &&
|
||||
!is_refname_available(ref, NULL, get_packed_refs(), 0))
|
||||
!is_refname_available(ref, NULL, get_packed_refs(), 0)) {
|
||||
last_errno = ENOTDIR;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
lock->lk = xcalloc(1, sizeof(struct lock_file));
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче