# [PATCH] log: Do not decorate replacements with --no-replace-objects

5 messages from 2011-08-25 to 2011-08-25. Participants: Michael J Gruber, Nguyen Thai Ngoc Duy, Junio C Hamano.
Thread: https://gitlist.dev/t/28215

## Michael J Gruber, 2011-08-25 13:44

Subject: [PATCH] log: Do not decorate replacements with --no-replace-objects
Message-ID: <ad41e81daa6f9fc4654ae4c312f293202519a5d0.1314279822.git.git@drmicha.warpmail.net>
URL: https://gitlist.dev/e/ad41e81daa6f9fc4654ae4c312f293202519a5d0.1314279822.git.git%40drmicha.warpmail.net

```
5267d29 (log: decorate "replaced" on to replaced commits, 2011-08-19)
introduced textual decorations for replaced commits, based on the
detection of refs/replace.

Make it so that additionally the use of --no-replace-objects is
detected: I.e. replaced commits are only decorated as replaced when they
are actually replaced.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
Sorry for being late to the party. Trying to keep up.
---
 log-tree.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/log-tree.c b/log-tree.c
index 74fc20d..2066bb7 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -95,7 +95,7 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
 	struct object *obj;
 	enum decoration_type type = DECORATION_NONE;
 
-	if (!prefixcmp(refname, "refs/replace/")) {
+	if (read_replace_refs && !prefixcmp(refname, "refs/replace/")) {
 		unsigned char original_sha1[20];
 		if (get_sha1_hex(refname + 13, original_sha1)) {
 			warning("invalid replace ref %s", refname);
-- 
1.7.6.845.gc3c05

```

## Nguyen Thai Ngoc Duy, 2011-08-25 13:55

Subject: Re: [PATCH] log: Do not decorate replacements with --no-replace-objects
Message-ID: <CACsJy8BOhU7-aTN2TPRRoQ=_mSfbOstXFRfpyoPmrr_Gbqg0pg@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8BOhU7-aTN2TPRRoQ%3D_mSfbOstXFRfpyoPmrr_Gbqg0pg%40mail.gmail.com
In-Reply-To: <ad41e81daa6f9fc4654ae4c312f293202519a5d0.1314279822.git.git@drmicha.warpmail.net>

```
2011/8/25 Michael J Gruber <git@drmicha.warpmail.net>:
> Make it so that additionally the use of --no-replace-objects is
> detected: I.e. replaced commits are only decorated as replaced when they
> are actually replaced.

Yeah.. I forgot about this.

> @@ -95,7 +95,7 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
>        struct object *obj;
>        enum decoration_type type = DECORATION_NONE;
>
> -       if (!prefixcmp(refname, "refs/replace/")) {
> +       if (read_replace_refs && !prefixcmp(refname, "refs/replace/")) {
>                unsigned char original_sha1[20];
>                if (get_sha1_hex(refname + 13, original_sha1)) {
>                        warning("invalid replace ref %s", refname);

You should put "if (!read_replace_refs) return 0;" inside "if
(!prefixcmp..", otherwise it'll come to the ref decoration code below
and my second paragraph in 5267d29's commit message will be reverted.

I thought my patch was
 - simple
 - replace is rarely used
therefore neglected the tests. Perhaps you can also add a few tests
here. It's not that simple after all.
-- 
Duy

```

## Michael J Gruber, 2011-08-25 15:08

Subject: Re: [PATCH] log: Do not decorate replacements with --no-replace-objects
Message-ID: <4E566586.5010901@drmicha.warpmail.net>
URL: https://gitlist.dev/e/4E566586.5010901%40drmicha.warpmail.net
In-Reply-To: <CACsJy8BOhU7-aTN2TPRRoQ=_mSfbOstXFRfpyoPmrr_Gbqg0pg@mail.gmail.com>

```
Nguyen Thai Ngoc Duy venit, vidit, dixit 25.08.2011 15:55:
> 2011/8/25 Michael J Gruber <git@drmicha.warpmail.net>:
>> Make it so that additionally the use of --no-replace-objects is
>> detected: I.e. replaced commits are only decorated as replaced when they
>> are actually replaced.
> 
> Yeah.. I forgot about this.
> 
>> @@ -95,7 +95,7 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
>>        struct object *obj;
>>        enum decoration_type type = DECORATION_NONE;
>>
>> -       if (!prefixcmp(refname, "refs/replace/")) {
>> +       if (read_replace_refs && !prefixcmp(refname, "refs/replace/")) {
>>                unsigned char original_sha1[20];
>>                if (get_sha1_hex(refname + 13, original_sha1)) {
>>                        warning("invalid replace ref %s", refname);
> 
> You should put "if (!read_replace_refs) return 0;" inside "if
> (!prefixcmp..", otherwise it'll come to the ref decoration code below
> and my second paragraph in 5267d29's commit message will be reverted.

Right, thanks for checking.

> I thought my patch was
>  - simple
>  - replace is rarely used
> therefore neglected the tests. Perhaps you can also add a few tests
> here. It's not that simple after all.

It would take a bit to do so, but this is a fix to a recently introduced
feature, so it should go along quickly. v2 upcoming.

Michael

```

## Michael J Gruber, 2011-08-25 15:09

Subject: [PATCHv2] log: Do not decorate replacements with --no-replace-objects
Message-ID: <739ff64bdbd0c099b3baf0755c0350de82c1ec0a.1314284204.git.git@drmicha.warpmail.net>
URL: https://gitlist.dev/e/739ff64bdbd0c099b3baf0755c0350de82c1ec0a.1314284204.git.git%40drmicha.warpmail.net
In-Reply-To: <4E566586.5010901@drmicha.warpmail.net>

```
5267d29 (log: decorate "replaced" on to replaced commits, 2011-08-19)
introduced textual decorations for replaced commits, based on the
detection of refs/replace.

Make it so that additionally the use of --no-replace-objects is
detected: I.e. replaced commits are only decorated as replaced when they
are actually replaced.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
Sorry for being late to the party. Trying to keep up.
---
 log-tree.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/log-tree.c b/log-tree.c
index 74fc20d..f65f6b6 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -96,6 +96,8 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
 	enum decoration_type type = DECORATION_NONE;
 
 	if (!prefixcmp(refname, "refs/replace/")) {
+		if (!read_replace_refs)
+			return 0;
 		unsigned char original_sha1[20];
 		if (get_sha1_hex(refname + 13, original_sha1)) {
 			warning("invalid replace ref %s", refname);
-- 
1.7.6.845.gc3c05

```

## Junio C Hamano, 2011-08-25 21:22

Subject: Re: [PATCHv2] log: Do not decorate replacements with --no-replace-objects
Message-ID: <7vty95i3ua.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vty95i3ua.fsf%40alter.siamese.dyndns.org
In-Reply-To: <739ff64bdbd0c099b3baf0755c0350de82c1ec0a.1314284204.git.git@drmicha.warpmail.net>

```
Thanks, both. Will apply.

```
