Re: possible bug of git stash deleting uncommitted files in corner case

2016-04-22 Thread Daniele Segato
sorry I forgot:

 $ git --version
git version 1.9.1


On Fri, Apr 22, 2016 at 1:46 PM, Daniele Segato
<daniele.seg...@gmail.com> wrote:
> Hi,
>
> my coworker today claimed git stash deleted his files, I made him
> explain me what he did and I think it could actually be a bug even if
> happening only in a corner case better explained with code to
> reproduce:
>
> git init
> echo 'X' > foo
> git add foo
> git commit -m 'foo file committed'
>
>
> what follow is the corner case I'm talking about: he deleted the file,
> created a directory with THE SAME name and added lot of files in it,
> in this example I'll only add one
>
>
> rm foo
> mkdir foo
> echo 'B' > foo/bar
>
>
> at this point the working directory looks like this:
>
>  $ tree
> .
> └── foo
> └── bar
>
> 1 directory, 1 file
>
>
> but apparently git status does not seem to see foo directory at all:
>
>
> $ git status
> On branch master
> Changes not staged for commit:
>
>   deleted:foo
>
> no changes added to commit (use "git add" and/or "git commit -a")
>
>
> I expected something more like:
>
>
> $ git status
> On branch master
> Changes not staged for commit:
>
>   deleted: foo
>
> Untracked files:
>
>   foo/
>
> no changes added to commit (use "git add" and/or "git commit -a")
>
>
> Anyway he went on and decided to stash his work:
>
>
> git stash
>
>
> at this point stash deleted the "bar" file, in his case all the work
> on the previous couple of hours, but he didn't know yet
>
>
> $ git stash show stash@{0}
> foo | 1 -
> 1 file changed, 1 deletion(-)
>
>
> the foo directory was gone, replaced by the foo file
>
>
> git stash pop
>
>
> did not complained and deleted foo file again
>
>
> I know my co-worker shouldn't had created a directory with the same
> file he was deleting but I also think git shouldn't have allowed him
> to stash at all, or should have been cleaver enough to actually stash
> the directory with its files.
>
>
> Regards,
> Daniele Segato
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


possible bug of git stash deleting uncommitted files in corner case

2016-04-22 Thread Daniele Segato
Hi,

my coworker today claimed git stash deleted his files, I made him
explain me what he did and I think it could actually be a bug even if
happening only in a corner case better explained with code to
reproduce:

git init
echo 'X' > foo
git add foo
git commit -m 'foo file committed'


what follow is the corner case I'm talking about: he deleted the file,
created a directory with THE SAME name and added lot of files in it,
in this example I'll only add one


rm foo
mkdir foo
echo 'B' > foo/bar


at this point the working directory looks like this:

 $ tree
.
└── foo
└── bar

1 directory, 1 file


but apparently git status does not seem to see foo directory at all:


$ git status
On branch master
Changes not staged for commit:

  deleted:foo

no changes added to commit (use "git add" and/or "git commit -a")


I expected something more like:


$ git status
On branch master
Changes not staged for commit:

  deleted: foo

Untracked files:

  foo/

no changes added to commit (use "git add" and/or "git commit -a")


Anyway he went on and decided to stash his work:


git stash


at this point stash deleted the "bar" file, in his case all the work
on the previous couple of hours, but he didn't know yet


$ git stash show stash@{0}
foo | 1 -
1 file changed, 1 deletion(-)


the foo directory was gone, replaced by the foo file


git stash pop


did not complained and deleted foo file again


I know my co-worker shouldn't had created a directory with the same
file he was deleting but I also think git shouldn't have allowed him
to stash at all, or should have been cleaver enough to actually stash
the directory with its files.


Regards,
Daniele Segato
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-08-07 Thread Daniele Segato

On 07/29/2013 08:02 PM, Daniele Segato wrote:

On 07/26/2013 09:36 PM, Jonathan Nieder wrote:

Eventually the description section should probably be tweaked to start
by explaining what the command is actually for. ;-)


Elaborating from this suggestion you gave me I tried to
rewrite/rearrange the description moving things around a little.

Here's what I've come out with, what do you think about it?



DESCRIPTION
---

A tag is a non-mutable reference name (in `refs/tags/`) to an object
(usually a commit).

If one of `-d/-l/-v` options is given the command will delete, list or
verify tags.

If one of `-a`, `-s`, or `-u key-id` is passed, the command
creates both the reference and a 'tag' object containing a creation
date, the tagger name and e-mail, a tag message and an optional GnuPG
signature.  Unless
`-m msg` or `-F file` is given, an editor is started for the user to
type in the tag message.

Otherwise just a tag reference for the SHA-1 object name of the commit
object is created (i.e. a lightweight tag).

Unless `-f` is given, the named tag must not yet exist.

If `-m msg` or `-F file` is given and `-a`, `-s`, and `-u key-id`
are absent, `-a` is implied.

A GnuPG signed tag object will be created when `-s` or `-u
key-id` is used.  When `-u key-id` is not used, the
committer identity for the current user is used to find the
GnuPG key for signing.  The configuration variable `gpg.program`
is used to specify custom GnuPG binary.

Tag objects (created with `-a`, `s`, or `-u`) are called annotated
tags; whereas a lightweight tag is simply a name for an object
(usually a commit object).

Annotated tags are meant for release while lightweight tags are meant
for private or temporary object labels. For this reason, some git
commands for naming objects (like `git describe`) will ignore
lightweight tags by default.


I suppose there's no interest in this anymore

thanks anyway,
Regards,
Daniele Segato

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-07-29 Thread Daniele Segato

On 07/26/2013 09:36 PM, Jonathan Nieder wrote:

Eventually the description section should probably be tweaked to start
by explaining what the command is actually for. ;-)


Elaborating from this suggestion you gave me I tried to 
rewrite/rearrange the description moving things around a little.


Here's what I've come out with, what do you think about it?



DESCRIPTION
---

A tag is a non-mutable reference name (in `refs/tags/`) to an object 
(usually a commit).


If one of `-d/-l/-v` options is given the command will delete, list or 
verify tags.


If one of `-a`, `-s`, or `-u key-id` is passed, the command
creates both the reference and a 'tag' object containing a creation 
date, the tagger name and e-mail, a tag message and an optional GnuPG 
signature.  Unless
`-m msg` or `-F file` is given, an editor is started for the user to 
type in the tag message.


Otherwise just a tag reference for the SHA-1 object name of the commit 
object is created (i.e. a lightweight tag).


Unless `-f` is given, the named tag must not yet exist.

If `-m msg` or `-F file` is given and `-a`, `-s`, and `-u key-id`
are absent, `-a` is implied.

A GnuPG signed tag object will be created when `-s` or `-u
key-id` is used.  When `-u key-id` is not used, the
committer identity for the current user is used to find the
GnuPG key for signing.  The configuration variable `gpg.program`
is used to specify custom GnuPG binary.

Tag objects (created with `-a`, `s`, or `-u`) are called annotated 
tags; whereas a lightweight tag is simply a name for an object 
(usually a commit object).


Annotated tags are meant for release while lightweight tags are meant 
for private or temporary object labels. For this reason, some git 
commands for naming objects (like `git describe`) will ignore 
lightweight tags by default.



--
Cheers,
Daniele Segato
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-07-29 Thread Daniele Segato

On 07/27/2013 01:45 PM, Stefan Beller wrote:

On 07/27/2013 01:26 PM, Philip Oakley wrote:


Try 'git format-patch' and 'git send-email'. The format-patch man page
even has a note about Thunderbird corruptions.

Philip



Well I use Thunderbird as well for regular communication except for
sending patches.
The kernel documentation has also some words about Thunderbird
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/email-clients.txt

Given so many steps, I also configured git send-email, which makes
sure that patches are uncorrupted.
For gmail add these lines to your ~/.gitconfig

[sendemail]

[snip]



Then you'd need to have msmtp installed and have the following
in the file ~/.msmtprc

[snip]


I think it would also work without having git relying on msmtp by now,
but I'd be too lazy to change my existing working setup.



Hi Paolo, Philip, Stefan,

thank you, you've been very kind.
I think I've set it up, I'll try with the next patch, if any!

Regards,
Daniele Segato


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-07-29 Thread Daniele Segato

On 07/29/2013 05:04 PM, Junio C Hamano wrote:

Marc Branchaud marcn...@xiplink.com writes:


On 13-07-26 03:06 PM, Jeff King wrote:

On Fri, Jul 26, 2013 at 07:33:01PM +0200, Daniele Segato wrote:


stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com


The intent of your patch seems reasonable to me. There are a few minor
language and typographical mistakes, and the patch itself is
whitespace-damaged.

I also do not know that it is accurate to say most git commands ignore
lightweight tags. It is really only naming ones like git describe.

Here is a re-send of your patch with the fixups I would recommend.


I'm happy with Peff's version.

Reviewed-by: Marc Branchaud marcn...@xiplink.com

(Daniele, don't feel put off because Jonathan  I are accepting Peff's text.
  If you think it still needs improving please speak up!)



I'm not feeling putting off. I thank you for the help you gave me.
Hopefully I'll be able to provide a better patch next time.


M.


Thank you all.  Will apply.



I'm probably too late, I did proposed another version of the page 
tweaking all the description part in response to Jonathan Nieder and 
re-using the Jeff King proposition.


I've been busy in the last days and couldn't reply before now.

I'll understand if you don't like it and don't want to lose more time on 
this.


Regards,
Daniele Segato

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-tag man: when to use lightweight or annotated tags

2013-07-29 Thread Daniele Segato

On 07/26/2013 11:13 PM, Marc Branchaud wrote:

On 13-07-26 01:19 PM, Daniele Segato wrote:


By the way which is your role in the community?
Don't want to be rude, I just don't know who I'm talking about :) the
documentation maintainer?


I'm just a git user and (very) occasional contributor.

There's not much structure to the git community.  Anyone who wants git to
change can post a patch (or patch series) to this list.  The patch can touch
any area of the code, and it's considered good manners to CC whoever last
touched the part(s) of the code being patched.

The patch is discussed and revised as needed, and eventually the patch
thread's participants arrive at a consensus as to whether or not the patch
should become a part of git.  If the patch is accepted the git maintainer
(Junio C. Hamano) shepherds the patch through git's release process.  See
this note:
http://git-blame.blogspot.ca/p/a-note-from-maintainer.html
for more about that and other aspects of the git development community.

M.



Thanks.
That helps a bit in understanding how I fit into the ml!

Cheers,
Daniele Segato
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-07-27 Thread Daniele Segato

On 07/26/2013 09:06 PM, Jeff King wrote:

On Fri, Jul 26, 2013 at 07:33:01PM +0200, Daniele Segato wrote:


stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com


The intent of your patch seems reasonable to me. There are a few minor
language and typographical mistakes, and the patch itself is
whitespace-damaged.


Hi Jeff,

thanks for the feedback, very appreciated.

But I don't understand what's wrong with the whitespaces.

Can you explain to me what's wrong and how I can avoid the issue?

I use thunderbird in text mode to send emails, should I use something 
else? what?




I also do not know that it is accurate to say most git commands ignore
lightweight tags. It is really only naming ones like git describe.

Here is a re-send of your patch with the fixups I would recommend.



Thanks, it's obviously better.

I'll send this new version as soon as you or someone else explain me how 
to fix the whitespace damage.



-- 8 --
From: Daniele Segato daniele.seg...@gmail.com
Subject: [PATCH] docs/git-tag: explain lightweight versus annotated tags

Stress the difference between the two with a suggestion on
when the user should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com
Signed-off-by: Jeff King p...@peff.net
---
  Documentation/git-tag.txt | 11 +++
  1 file changed, 11 insertions(+)

diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..c418c44 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -42,6 +42,17 @@ is used to specify custom GnuPG binary.
  GnuPG key for signing.The configuration variable `gpg.program`
  is used to specify custom GnuPG binary.

+Tag objects (created with `-a`, `s`, or `-u`) are called annotated
+tags; they contain a creation date, the tagger name and e-mail, a
+tagging message, and an optional GnuPG signature. Whereas a
+lightweight tag is simply a name for an object (usually a commit
+object).
+
+Annotated tags are meant for release while lightweight tags are meant
+for private or temporary object labels. For this reason, some git
+commands for naming objects (like `git describe`) will ignore
+lightweight tags by default.
+

  OPTIONS
  ---



--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-tag man: when to use lightweight or annotated tags

2013-07-26 Thread Daniele Segato

On 07/25/2013 04:47 PM, Marc Branchaud wrote:

On 13-07-25 09:45 AM, Daniele Segato wrote:

 From d0f4eca712e7cf74286bfab306763a8a571b6c95 Mon Sep 17 00:00:00 2001
From: Daniele Segato daniele.seg...@gmail.com
Date: Thu, 25 Jul 2013 15:33:18 +0200
Subject: [PATCH] git-tag man: when to use lightweight or annotated tags

stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com
---
  Documentation/git-tag.txt |4 
  1 file changed, 4 insertions(+)

diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..48f5504 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -36,6 +36,10 @@ are absent, `-a` is implied.
  Otherwise just a tag reference for the SHA-1 object name of the commit
object is
  created (i.e. a lightweight tag).

+Annotated and Lightweight tags are not the same thing for git and you shouldn't
+mix them up. Annotated tags are meant for release while lightweight tags are
+meant to tag random commits.


Unfortunately the word annotated hasn't yet been introduced at this point,
so the overall effect is even more confusing.


Actually annotated tag has already be introduced but they haven't been 
named Annotated yet; what about changing the above paragraph like this:


 If one of `-a`, `-s`, or `-u key-id` is passed, the command
-creates a 'tag' object, and requires a tag message.  Unless
+creates a 'tag' object called 'Annotated tag', and requires a tag 
message. Unless
 `-m msg` or `-F file` is given, an editor is started for the user 
to type

 in the tag message.





Also, I find the release vs.
random distinction a bit misleading since both types of tag can refer to
any object.


I can change it into something like these (using your suggestion below):
Annotated tags are meant for release while lightweight tags are meant 
for private or temporary object labels.


What do you think?


 I also liked the direction of your earlier command only
consider annotated tags by default phrasing.


I also think it would be helpful. We can write this after the previous 
sentence:

Most git commands only consider Annotated tags by default.




After reading the Tagging section of the Git Book[1] I came up with the
following.  Feel free to modify it as you like, or ignore it completely:

Tag objects (created with -a) are called annotated tags.  While a lightweight
tag is simply a name for an object (usually a commit object), an annotated
tag contains the creation date, the tagger's name and e-mail, a tagging
message, and can be signed and verified with GNU Privacy Guard (GnuPG).  Most
git commands only consider annotated tags by default.  In general lightweight
tags are for private or temporary object labels, while annotated tags are
meant to be permanent and/or published.  For example, an annotated tag is
normally used to identify a release point.

M.

[1] http://git-scm.com/book/en/Git-Basics-Tagging



I took some inspiration but I think writing about what a tag object 
contains in the documentation is not useful at that point in the doc. 
What's important there is that user do understand the difference between 
Annotated and Lightweight tags.


I'll follow with a patch containing these modification I'm talking 
about, should be easier to comment.


Regards,
Daniele

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-tag man: when to use lightweight or annotated tags

2013-07-26 Thread Daniele Segato

From 34fdcb56e5784699ffa327ebfcd2c5cd99b61d2d Mon Sep 17 00:00:00 2001
From: Daniele Segato daniele.seg...@gmail.com
Date: Thu, 25 Jul 2013 15:33:18 +0200
Subject: [PATCH] git-tag man: when to use lightweight or annotated tags

stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com
---
 Documentation/git-tag.txt |7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..5c6284e 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -26,7 +26,7 @@ to delete, list or verify tags.
 Unless `-f` is given, the named tag must not yet exist.

 If one of `-a`, `-s`, or `-u key-id` is passed, the command
-creates a 'tag' object, and requires a tag message.  Unless
+creates a 'tag' object called 'Annotated tag', and requires a tag 
message. Unless
 `-m msg` or `-F file` is given, an editor is started for the user 
to type

 in the tag message.

@@ -36,6 +36,11 @@ are absent, `-a` is implied.
 Otherwise just a tag reference for the SHA-1 object name of the commit 
object is

 created (i.e. a lightweight tag).

+'Annotated' and 'Lightweight' tags are not the same thing for git and 
you shouldn't
+mix them up. Annotated tags are meant for release while lightweight 
tags are
+meant for private or temporary object labels. Most git commands only 
consider

+Annotated tags by default.
+
 A GnuPG signed tag object will be created when `-s` or `-u
 key-id` is used.  When `-u key-id` is not used, the
 committer identity for the current user is used to find the
--
1.7.10.4




--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-tag man: when to use lightweight or annotated tags

2013-07-26 Thread Daniele Segato

On 07/26/2013 04:51 PM, Marc Branchaud wrote:

On 13-07-26 04:46 AM, Daniele Segato wrote:

 From 34fdcb56e5784699ffa327ebfcd2c5cd99b61d2d Mon Sep 17 00:00:00 2001
From: Daniele Segato daniele.seg...@gmail.com
Date: Thu, 25 Jul 2013 15:33:18 +0200
Subject: [PATCH] git-tag man: when to use lightweight or annotated tags


When sending a patch to the list it's not necessary to include these headers,
as the git tools will extract them from the email itself.

Also, when sending a revision to a previously posted patch it's customary to
include a revision number, e.g. [PATCHv2].


Thanks, I'll try to do the right thing with the next patch.

By the way which is your role in the community?
Don't want to be rude, I just don't know who I'm talking about :) the 
documentation maintainer?


Thanks for the help anyway.


diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..5c6284e 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -26,7 +26,7 @@ to delete, list or verify tags.
  Unless `-f` is given, the named tag must not yet exist.

  If one of `-a`, `-s`, or `-u key-id` is passed, the command
-creates a 'tag' object, and requires a tag message.  Unless
+creates a 'tag' object called 'Annotated tag', and requires a tag message.


1) Don't capitalize annotated -- it's not capitalized anywhere else in the
text.  The same goes for lightweight.


Ok



2) I find the phrasing here awkward.  The important thing to convey is that
annotated tag is a synonym for tag object.  The proposed text implies
that there can be other kinds of tag objects that are not annotated tags, but
I don't think that's true.  I've mulled over different ways of introducing
the annotated tag term here, but I can't come up with a succinct way to do
it.  I think it's better to just introduce the term later.



Ok, English is not my native language so no surprise it sound awkward ;)

I'll follow your suggestion here and move everything later.



Unless
  `-m msg` or `-F file` is given, an editor is started for the user to type
  in the tag message.

@@ -36,6 +36,11 @@ are absent, `-a` is implied.
  Otherwise just a tag reference for the SHA-1 object name of the commit
object is
  created (i.e. a lightweight tag).

+'Annotated' and 'Lightweight' tags are not the same thing for git and you
shouldn't
+mix them up. Annotated tags are meant for release while lightweight tags are
+meant for private or temporary object labels. Most git commands only consider
+Annotated tags by default.
+


I'm sorry, but I feel this misses the mark.

It's redundant to say the tag types are not the same thing, since the fact
that they have different names already implies that.  Also, to me the
admonition you shouldn't mix them up is just a scary warning that conveys
no helpful information.

Furthermore, I think simply stating that the tag types are meant for
particular uses without explaining why is too glib.  Although it may be
natural in your circumstances to think of the tag types rigidly, I do not
think that's true for all git users and I don't think the documentation
should assume there's a One True Way to use tags.

The text should give readers enough information to decide for themselves how
they want to use the different types of tags.  That's why I included the
annotated tag's contents in my suggestion, so that readers could figure out
which tag type best meets their needs.

What you've proposed is a step in the right direction, but I think you need
to go further.

M.



I tried to take into account everything you said to me and rewrite the 
patch, following this message.


Regards,
Daniele

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv3] git-tag man: when to use lightweight or annotated tags

2013-07-26 Thread Daniele Segato

stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com
---
 Documentation/git-tag.txt |9 +
 1 file changed, 9 insertions(+)

diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..495eb71 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -42,6 +42,15 @@ committer identity for the current user is used to 
find the

 GnuPG key for signing. The configuration variable `gpg.program`
 is used to specify custom GnuPG binary.

+The tag objects (created with `-a`, `s`, or `-u`) are called 
'annotated' tags,
+they contains a creation date, the tagger name and e-mail, a tagging 
message

+and, eventually, the GNUPG signing and verification data. While a
+'lightweight' tag is simply a name for an object (usually a commit object).
+
+'Annotated' tag are meant for release while 'lightweight' tags are meant
+for private or temporary object labels, thus most git commands ignore
+lightweight tags by default.
+

 OPTIONS
 ---
--
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] git-tag man: when to use lightweight or annotated tags

2013-07-25 Thread Daniele Segato

From d0f4eca712e7cf74286bfab306763a8a571b6c95 Mon Sep 17 00:00:00 2001
From: Daniele Segato daniele.seg...@gmail.com
Date: Thu, 25 Jul 2013 15:33:18 +0200
Subject: [PATCH] git-tag man: when to use lightweight or annotated tags

stress the difference between the two with suggestion on when the user
should use one in place of the other.

Signed-off-by: Daniele Segato daniele.seg...@gmail.com
---
 Documentation/git-tag.txt |4 
 1 file changed, 4 insertions(+)

diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 22894cb..48f5504 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -36,6 +36,10 @@ are absent, `-a` is implied.
 Otherwise just a tag reference for the SHA-1 object name of the commit 
object is

 created (i.e. a lightweight tag).

+Annotated and Lightweight tags are not the same thing for git and you 
shouldn't
+mix them up. Annotated tags are meant for release while lightweight 
tags are

+meant to tag random commits.
+
 A GnuPG signed tag object will be created when `-s` or `-u
 key-id` is used.  When `-u key-id` is not used, the
 committer identity for the current user is used to find the
--
1.7.10.4



--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: git tag usability issue: Lightweight vs Annotated confusion for the end user (ex. git describe default)

2013-07-25 Thread Daniele Segato

On 07/24/2013 10:34 PM, Junio C Hamano wrote:

Daniele Segato daniele.seg...@gmail.com writes:


Annotated and Lightweight tags are not the same thing
for git and you shouldn't mix them up. Annotated tags are meant for
release while lightweight tags are meant to tag random commits.


Nicely explained.

This is one of those we who worked on Git (not worked with Git)
for a long time _know_ it and do not need it to be explained, and we
didn't spot that it is not explained in the documentation for new
people.


Good!

Any change in adding an option to filter tags list by annotated only?




Care to roll a documentation patch (and get a commit count for
yourself ;-)?


I tried, just sent the patch, hopefully I managed to follow the guide I 
found here: 
http://repo.or.cz/w/git.git?a=blob;f=Documentation/SubmittingPatches;hb=HEAD


As you suggested I removed the title line and the reference to git 
describe default.


If I did something wrong please explain me what and I'll fix it



Thanks.


You're Welcome :-)

Cheers,
Daniele Segato
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


git tag usability issue: Lightweight vs Annotated confusion for the end user (ex. git describe default)

2013-07-24 Thread Daniele Segato

Hi,

I think there is an issue with the documentation of git tag, or with the 
default being chosen for tags.


the git tag documentation say:

*
   If one of -a, -s, or -u key-id is passed, the command creates 
a tag object, and requires a tag message. Unless -m msg or -F file 
is given, an editor is started for the user to type in the tag

   message.

   If -m msg or -F file is given and -a, -s, and -u key-id 
are absent, -a is implied.


   Otherwise just a tag reference for the SHA1 object name of the 
commit object is created (i.e. a lightweight tag).

**

And no options below is provided to list annotated tags only or 
lightweight tags only (is there a way to do so?)


I initially didn't get git cared too much on this difference: I've been 
using both annotated and lightweight tags without distinctions, 
annotated when I want to write something about the tag and non-annotated 
when I do not need it.


Since no option is given to show annotated only tags these made sense to me.



Recently I started using submodules and I noticed that:
git submodule status

sometimes gave me the tag name of the submodule between parentesis and 
sometimes it gave me something like this:

+6903774653de52d0206e0e6026ca6914def8a333 submodule (1.0-2-g6903774)

even if the 6903774653de52d0206e0e6026ca6914def8a333 was actually a tag 
(1.1)


the git help submodule say status use git describe, so I've entered the 
submodule directory and tried:


$ git describe
1.0-2-g6903774

$ git describe --tags
1.1

reading the git help describe I discovered the git describe made an 
assumption and default to just show annotated tags.



To me, this assumption should have been documented very clearly in the 
git tag help page, something like this:


*
   If one of -a, -s, or -u key-id is passed, the command creates 
a tag object, and requires a tag message. Unless -m msg or -F file 
is given, an editor is started for the user to type in the tag

   message.

   If -m msg or -F file is given and -a, -s, and -u key-id 
are absent, -a is implied.


   Otherwise just a tag reference for the SHA1 object name of the 
commit object is created (i.e. a lightweight tag).



   ANNOTATED vs LIGHTWEIGHT tags

   Some git command (ex. git describe) by default only consider 
annotated tags. Annotated and Lightweight tags are not the same thing 
for git and you shouldn't mix them up. Annotated tags are meant for 
release while lightweight tags are meant to tag random commits.

**

And I think an option in git tag to only show annotated tags (or only 
show lightweight tags) is needed.




Finally, now that I discovered this I can't replace the lightweights 
tags with annotated tags without a public announcement requiring all 
developers to delete their local tags.


I'm not aware of any discussion you did about this matter but I think 
there's something wrong here that should be fixed.


Regards,
Daniele Segato
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html