mirror of
https://github.com/git-for-windows/git.git
synced 2025-12-13 16:47:36 -06:00
Merge branch 'maint'
* maint: Start 1.6.0.4 cycle add instructions on how to send patches to the mailing list with Gmail Documentation/gitattributes: Add subsection header for each attribute git send-email: avoid leaking directory file descriptors. send-pack: do not send out single-level refs such as refs/stash fix overlapping memcpy in normalize_absolute_path pack-objects: avoid reading uninitalized data correct cache_entry allocation Conflicts: RelNotes
This commit is contained in:
commit
aebd173ffa
29
Documentation/RelNotes-1.6.0.4.txt
Normal file
29
Documentation/RelNotes-1.6.0.4.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
GIT v1.6.0.4 Release Notes
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Fixes since v1.6.0.3
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
* 'git-add -p' said "No changes" when only binary files were changed.
|
||||||
|
|
||||||
|
* git-archive did not work correctly in bare repositories.
|
||||||
|
|
||||||
|
* when we refuse to detect renames because there are too many new or
|
||||||
|
deleted files, we did not say how many there are.
|
||||||
|
|
||||||
|
* 'git-push --mirror' tried and failed to push the stash; there is no
|
||||||
|
point in sending it to begin with.
|
||||||
|
|
||||||
|
* 'git-send-email' had a small fd leak while scanning directory.
|
||||||
|
|
||||||
|
* git-svn used deprecated 'git-foo' form of subcommand invocaition.
|
||||||
|
|
||||||
|
* Plugged small memleaks here and there.
|
||||||
|
|
||||||
|
* Also contains many documentation updates.
|
||||||
|
|
||||||
|
--
|
||||||
|
exec >/var/tmp/1
|
||||||
|
O=v1.6.0.3-22-gc2163c6
|
||||||
|
echo O=$(git describe maint)
|
||||||
|
git shortlog --no-merges $O..maint
|
||||||
@ -456,3 +456,30 @@ This should help you to submit patches inline using KMail.
|
|||||||
|
|
||||||
5) Back in the compose window: add whatever other text you wish to the
|
5) Back in the compose window: add whatever other text you wish to the
|
||||||
message, complete the addressing and subject fields, and press send.
|
message, complete the addressing and subject fields, and press send.
|
||||||
|
|
||||||
|
|
||||||
|
Gmail
|
||||||
|
-----
|
||||||
|
|
||||||
|
Submitting properly formatted patches via Gmail is simple now that
|
||||||
|
IMAP support is available. First, edit your ~/.gitconfig to specify your
|
||||||
|
account settings:
|
||||||
|
|
||||||
|
[imap]
|
||||||
|
folder = "[Gmail]/Drafts"
|
||||||
|
host = imaps://imap.gmail.com
|
||||||
|
user = user@gmail.com
|
||||||
|
pass = p4ssw0rd
|
||||||
|
port = 993
|
||||||
|
sslverify = false
|
||||||
|
|
||||||
|
Next, ensure that your Gmail settings are correct. In "Settings" the
|
||||||
|
"Use Unicode (UTF-8) encoding for outgoing messages" should be checked.
|
||||||
|
|
||||||
|
Once your commits are ready to send to the mailing list, run the following
|
||||||
|
command to send the patch emails to your Gmail Drafts folder.
|
||||||
|
|
||||||
|
$ git format-patch -M --stdout origin/master | git imap-send
|
||||||
|
|
||||||
|
Go to your Gmail account, open the Drafts folder, find the patch email, fill
|
||||||
|
in the To: and CC: fields and send away!
|
||||||
|
|||||||
@ -213,6 +213,9 @@ with `crlf`, and then `ident` and fed to `filter`.
|
|||||||
Generating diff text
|
Generating diff text
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
`diff`
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
The attribute `diff` affects if 'git-diff' generates textual
|
The attribute `diff` affects if 'git-diff' generates textual
|
||||||
patch for the path or just says `Binary files differ`. It also
|
patch for the path or just says `Binary files differ`. It also
|
||||||
can affect what line is shown on the hunk header `@@ -k,l +n,m @@`
|
can affect what line is shown on the hunk header `@@ -k,l +n,m @@`
|
||||||
@ -331,6 +334,9 @@ patterns are available:
|
|||||||
Performing a three-way merge
|
Performing a three-way merge
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
`merge`
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
The attribute `merge` affects how three versions of a file is
|
The attribute `merge` affects how three versions of a file is
|
||||||
merged when a file-level merge is necessary during `git merge`,
|
merged when a file-level merge is necessary during `git merge`,
|
||||||
and other programs such as `git revert` and `git cherry-pick`.
|
and other programs such as `git revert` and `git cherry-pick`.
|
||||||
|
|||||||
@ -1375,7 +1375,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
|
|||||||
array = xcalloc(window, sizeof(struct unpacked));
|
array = xcalloc(window, sizeof(struct unpacked));
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
struct object_entry *entry = *list++;
|
struct object_entry *entry;
|
||||||
struct unpacked *n = array + idx;
|
struct unpacked *n = array + idx;
|
||||||
int j, max_depth, best_base = -1;
|
int j, max_depth, best_base = -1;
|
||||||
|
|
||||||
@ -1384,6 +1384,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
|
|||||||
progress_unlock();
|
progress_unlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
entry = *list++;
|
||||||
(*list_size)--;
|
(*list_size)--;
|
||||||
if (!entry->preferred_base) {
|
if (!entry->preferred_base) {
|
||||||
(*processed)++;
|
(*processed)++;
|
||||||
|
|||||||
@ -140,7 +140,13 @@ static struct ref *remote_refs, **remote_tail;
|
|||||||
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
||||||
{
|
{
|
||||||
struct ref *ref;
|
struct ref *ref;
|
||||||
int len = strlen(refname) + 1;
|
int len;
|
||||||
|
|
||||||
|
/* we already know it starts with refs/ to get here */
|
||||||
|
if (check_ref_format(refname + 5))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
len = strlen(refname) + 1;
|
||||||
ref = xcalloc(1, sizeof(*ref) + len);
|
ref = xcalloc(1, sizeof(*ref) + len);
|
||||||
hashcpy(ref->new_sha1, sha1);
|
hashcpy(ref->new_sha1, sha1);
|
||||||
memcpy(ref->name, refname, len);
|
memcpy(ref->name, refname, len);
|
||||||
|
|||||||
@ -374,10 +374,9 @@ for my $f (@ARGV) {
|
|||||||
|
|
||||||
push @files, grep { -f $_ } map { +$f . "/" . $_ }
|
push @files, grep { -f $_ } map { +$f . "/" . $_ }
|
||||||
sort readdir(DH);
|
sort readdir(DH);
|
||||||
|
closedir(DH);
|
||||||
} elsif (-f $f or -p $f) {
|
} elsif (-f $f or -p $f) {
|
||||||
push @files, $f;
|
push @files, $f;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
print STDERR "Skipping $f - not found.\n";
|
print STDERR "Skipping $f - not found.\n";
|
||||||
}
|
}
|
||||||
|
|||||||
2
path.c
2
path.c
@ -348,7 +348,7 @@ int normalize_absolute_path(char *buf, const char *path)
|
|||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(dst, comp_start, comp_len);
|
memmove(dst, comp_start, comp_len);
|
||||||
dst += comp_len;
|
dst += comp_len;
|
||||||
next:
|
next:
|
||||||
comp_start = comp_end;
|
comp_start = comp_end;
|
||||||
|
|||||||
@ -382,7 +382,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
|
|||||||
o->merge_size = len;
|
o->merge_size = len;
|
||||||
|
|
||||||
if (!dfc)
|
if (!dfc)
|
||||||
dfc = xcalloc(1, sizeof(struct cache_entry) + 1);
|
dfc = xcalloc(1, cache_entry_size(0));
|
||||||
o->df_conflict_entry = dfc;
|
o->df_conflict_entry = dfc;
|
||||||
|
|
||||||
if (len) {
|
if (len) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user