[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-commits-diffs] net.venge.monotone: 09c2276fbcffdaca4bbb83d0f1f
From: |
code |
Subject: |
[Monotone-commits-diffs] net.venge.monotone: 09c2276fbcffdaca4bbb83d0f1fcefa76da15d12 |
Date: |
Sat, 4 Aug 2012 14:26:30 +0200 (CEST) |
revision: 09c2276fbcffdaca4bbb83d0f1fcefa76da15d12
date: 2012-08-04T12:25:05
author: address@hidden
branch: net.venge.monotone
changelog:
fix issue 210: diff treat files with mtn:manual_merge as binary
* src/cmd_diff_log.cc (dump_diff, dump_diffs): treat files with
mtn:manual_merge as binary
* src/cmd_files.cc (CMD fdiff): match make_diff change
* src/diff_output.hh (make_diff):
* src/diff_output.cc (make_diff): add is_manual_merge
manifest:
format_version "1"
new_manifest [b75988544cf9518571645198acb191a1f3831715]
old_revision [806715c5ce888b7dbbce7752a7ff35868ee3bcfa]
patch "src/cmd_diff_log.cc"
from [55dcbe5e40b8e706559f8b76a83b7fb81caecde1]
to [73c7b3cba5a9e1af54ff98b44863c631289bfed4]
patch "src/cmd_files.cc"
from [f15378efd25e597762776ad6e9c6f78c1a4ff191]
to [35ef41ea62233513fe1aa54cedf8c70ade96973a]
patch "src/diff_output.cc"
from [8df7c0bec2e64275f6c8e8b6ccb035c8fd0f684f]
to [78be17ba28d6f26930b6ee36f04b4382450b912b]
patch "src/diff_output.hh"
from [9125ccd0d0fa725782c9910b5f34e844048d2da8]
to [905c550857ce361fd3e0da69840fd95860cc7874]
============================================================
--- src/cmd_diff_log.cc 55dcbe5e40b8e706559f8b76a83b7fb81caecde1
+++ src/cmd_diff_log.cc 73c7b3cba5a9e1af54ff98b44863c631289bfed4
@@ -1,4 +1,4 @@
-// Copyright (C) 2009, 2010 Stephen Leake <address@hidden>
+// Copyright (C) 2009, 2010, 2012 Stephen Leake <address@hidden>
// Copyright (C) 2002 Graydon Hoare <address@hidden>
//
// This program is made available under the GNU GPL version 2.0 or
@@ -32,6 +32,7 @@
#include "database.hh"
#include "work.hh"
#include "roster.hh"
+#include "vocab_cast.hh"
using std::cout;
using std::make_pair;
@@ -66,6 +67,7 @@ dump_diff(lua_hooks & lua,
file_path const & left_path, file_path const & right_path,
file_id const left_id, file_id const right_id,
data const & left_data, data const & right_data,
+ bool is_manual_merge,
diff_type const diff_format,
bool external_diff_args_given,
string external_diff_args,
@@ -74,9 +76,7 @@ dump_diff(lua_hooks & lua,
{
if (diff_format == external_diff)
{
- bool is_binary = false;
- if (guess_binary(left_data()) || guess_binary(right_data()))
- is_binary = true;
+ bool is_binary = is_manual_merge || guess_binary(left_data()) || guess_binary(right_data());
file_path path = right_path;
if (path.empty()) // use the left path for deletes
@@ -111,6 +111,7 @@ dump_diff(lua_hooks & lua,
make_diff(left, right,
left_id, right_id,
left_data, right_data,
+ is_manual_merge,
output, diff_format, encloser);
}
@@ -119,8 +120,9 @@ struct diff_node_data
{
file_path left_path;
file_path right_path;
- file_id left_id;
- file_id right_id;
+ file_id left_id;
+ file_id right_id;
+ bool is_manual_merge;
};
static void
@@ -139,6 +141,7 @@ dump_diffs(lua_hooks & lua,
// Put all node data in a multimap with the file path of the node as key
// which gets automatically sorted. For removed nodes the file path is
// the left_path, for added, patched and renamed nodes it is the right_path.
+ attr_key manual_merge_key = typecast_vocab<attr_key>(utf8("mtn:manual_merge"));
std::multimap<file_path, diff_node_data> path_node_data;
parallel::iter<node_map> i(left_roster.all_nodes(), right_roster.all_nodes());
while (i.next())
@@ -160,6 +163,8 @@ dump_diffs(lua_hooks & lua,
dat.left_id = downcast_to_file_t(i.left_data())->content;
// right_id is null
+ dat.is_manual_merge = (i.left_data()->attrs.find(manual_merge_key) != i.left_data()->attrs.end());
+
path_node_data.insert(make_pair(dat.left_path, dat));
}
break;
@@ -175,6 +180,8 @@ dump_diffs(lua_hooks & lua,
// left_id is null
dat.right_id = downcast_to_file_t(i.right_data())->content;
+ dat.is_manual_merge = (i.right_data()->attrs.find(manual_merge_key) != i.right_data()->attrs.end());
+
path_node_data.insert(make_pair(dat.right_path, dat));
}
break;
@@ -193,6 +200,10 @@ dump_diffs(lua_hooks & lua,
left_roster.get_name(i.left_key(), dat.left_path);
right_roster.get_name(i.right_key(), dat.right_path);
+ dat.is_manual_merge =
+ (i.left_data()->attrs.find(manual_merge_key) != i.left_data()->attrs.end()) or
+ (i.right_data()->attrs.find(manual_merge_key) != i.right_data()->attrs.end());
+
path_node_data.insert(make_pair(dat.right_path, dat));
}
break;
@@ -219,6 +230,7 @@ dump_diffs(lua_hooks & lua,
dat.left_path, dat.right_path,
dat.left_id, dat.right_id,
left_data, right_data,
+ dat.is_manual_merge,
diff_format, external_diff_args_given, external_diff_args,
encloser, output);
}
============================================================
--- src/cmd_files.cc f15378efd25e597762776ad6e9c6f78c1a4ff191
+++ src/cmd_files.cc 35ef41ea62233513fe1aa54cedf8c70ade96973a
@@ -132,6 +132,7 @@ CMD(fdiff, "fdiff", "", CMD_REF(debug),
make_diff(src_name, dst_name,
src_id, dst_id,
src.inner(), dst.inner(),
+ false, // is_manual_merge
cout, app.opts.diff_format, pattern);
}
============================================================
--- src/diff_output.cc 8df7c0bec2e64275f6c8e8b6ccb035c8fd0f684f
+++ src/diff_output.cc 78be17ba28d6f26930b6ee36f04b4382450b912b
@@ -1,5 +1,5 @@
// Copyright (C) 2002 Graydon Hoare <address@hidden>
-// 2008 Stephen Leake <address@hidden>
+// 2008, 2012 Stephen Leake <address@hidden>
//
// This program is made available under the GNU GPL version 2.0 or
// greater. See the accompanying file COPYING for details.
@@ -469,11 +469,12 @@ make_diff(string const & filename1,
file_id const & id2,
data const & data1,
data const & data2,
+ bool is_manual_merge,
ostream & ost,
diff_type type,
string const & pattern)
{
- if (guess_binary(data1()) || guess_binary(data2()))
+ if (is_manual_merge || guess_binary(data1()) || guess_binary(data2()))
{
// If a file has been removed, filename2 will be "/dev/null".
// It doesn't make sense to output that.
============================================================
--- src/diff_output.hh 9125ccd0d0fa725782c9910b5f34e844048d2da8
+++ src/diff_output.hh 905c550857ce361fd3e0da69840fd95860cc7874
@@ -1,5 +1,5 @@
// Copyright (C) 2002 Graydon Hoare <address@hidden>
-// 2008 Stephen Leake <address@hidden>
+// 2008, 2012 Stephen Leake <address@hidden>
//
// This program is made available under the GNU GPL version 2.0 or
// greater. See the accompanying file COPYING for details.
@@ -22,6 +22,7 @@ void make_diff(std::string const & filen
file_id const & id2,
data const & data1,
data const & data2,
+ bool is_manual_merge,
std::ostream & ost,
diff_type type,
std::string const & pattern);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Monotone-commits-diffs] net.venge.monotone: 09c2276fbcffdaca4bbb83d0f1fcefa76da15d12,
code <=