From: Johannes Sixt <johannes.sixt@telecom.at>
To: git@vger.kernel.org
Subject: [PATCH 2/2] Tell multi-parent diff about core.symlinks.
Date: Sat, 3 Mar 2007 20:38:00 +0100 [thread overview]
Message-ID: <200703032038.00928.johannes.sixt@telecom.at> (raw)
In-Reply-To: <200703032032.47158.johannes.sixt@telecom.at>
When core.symlinks is false, and a merge of symbolic links had conflicts,
the merge result is left as a file in the working directory. A decision
must be made whether the file is treated as a regular file or as a
symbolic link. This patch treats the file as a symbolic link only if
all merge parents were also symbolic links.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
---
I'm not quite sure whether this patch is worth it. The only thing it seems
to do is to avoid the mode change line (this is after a merge where 'symlink'
had a conflict):
without the patch:
$ git diff
diff --cc symlink
index 1a010b1,30d67d4..0000000
mode 120000,120000..100644
--- a/symlink
+++ b/symlink
with the patch:
$ git diff
diff --cc symlink
index 1a010b1,30d67d4..0000000
--- a/symlink
+++ b/symlink
combine-diff.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/combine-diff.c b/combine-diff.c
index 044633d..e6e3969 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -699,8 +699,18 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
!fstat(fd, &st)) {
size_t len = st.st_size;
size_t sz = 0;
+ int is_file, i;
elem->mode = canon_mode(st.st_mode);
+ /* if symlinks don't work, assume symlink if all parents
+ * are symlinks
+ */
+ is_file = has_symlinks;
+ for (i = 0; !is_file && i < num_parent; i++)
+ is_file = !S_ISLNK(elem->parent[i].mode);
+ if (!is_file)
+ elem->mode = canon_mode(S_IFLNK);
+
result_size = len;
result = xmalloc(len + 1);
while (sz < len) {
--
1.5.0.2.4.gdd4e4-dirty
next prev parent reply other threads:[~2007-03-03 19:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-03 19:32 [PATCH 1/2] Handle core.symlinks=false case in merge-recursive Johannes Sixt
2007-03-03 19:38 ` Johannes Sixt [this message]
2007-03-03 20:11 ` Johannes Schindelin
2007-03-03 20:39 ` Johannes Sixt
2007-03-03 20:44 ` Johannes Schindelin
2007-03-03 20:21 ` Johannes Sixt
2007-03-04 3:42 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200703032038.00928.johannes.sixt@telecom.at \
--to=johannes.sixt@telecom.at \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox