Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

SVN Users and Git Authors

Both Subversion and Git keep authors in commits, but those authors entities differ in those two systems.

In SVN, the author is being stored as an unversioned revision property, namely svn:author. Every time a Subversion user makes a commit, SVN creates a new revision and sets this revision svn:author property to be equal to that exact user's name, e.g. johndoe in this case:

------------------------------------------------------------------------
    r163 | johndoe | 2017-06-07 20:22:15 +0500 (Wed, 07 Jun 2017) | 1 line
    Changed paths:
       A /project
       A /project/branches
       A /project/tags
       A /project/trunk

    initial layout for the project
    ------------------------------------------------------------------------

Git, in turn, also stores author's name along with every commit, but this name differs from that in SVN: whereas SVN stores actual username, Git stores a name that's set by user.name Git directive, e.g., by global setting:

$ git config --global user.name "John Doe"

and in addition to the user.name Git relies upon user.email that can be set as:

$ git config --global user.email johndoe@example.com

Actually, both user.name and user.email are parts of Git user identity, i.e. a Git user is being mentioned as

Git User <gituser@domain.com>

everywhere; e.g. the user John Doe we've set above will be referred as:

John Doe <johndoe@example.com>

and this exact line will appear as author name when the user makes some commit in Git. Still, it worth to mention for completeness sake that Git stores not only author but also a committer name along with every commit and they may differ in some cases:

$ git cat-file commit HEAD
    tree 905df23db37b33320483fc6676bfc684078ed248
    parent 4a0cf06baa9aefaa20a13820265ef401d7b1c2b6
    author John Doe <johndoe@example.com> 1496849115 +0000
    committer Jane Doe <janedoe@example.com> 1496849115 +0000

Pro Git book describes the difference between those names as follows: the author is the person who originally wrote the work, whereas the committer is the person who last applied the work. So, if you send in a patch to a project and one of the core members applies the patch, both of you get credit – you as the author, and the core member as the committer.

Most often though, author and committer names are the same since most of the programmers commit their work by themselves. Also, SubGit works with Git author name, so committer name doesn't mean much for the SVN-to-Git translation process.

  • No labels