Re: [PATCH v4 0/5] Patches to avoid reporting conversion changes.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 7 Jun 2010, Finn Arne Gangstad wrote:

On Mon, Jun 07, 2010 at 06:37:56PM +0200, Henrik Grubbström wrote:

On Mon, 7 Jun 2010, Finn Arne Gangstad wrote:

I think it would be best if git at this time could decide that the
affected files also become dirty. The ideal commit is one that
both alters the .gitattributes _and_ the affected files at the same
time, and git should make it easy to create that commit.

I agree in the case of newly added attributes. In the case of
repositories already containing unnormalized files this however leads to
problems.
eg

  Consider the case above, but a while later when the repository has been
  fixed at HEAD. If an old version from before the normalization is
  checked out, the index will once again become dirty, which means that
  git will refuse the user to check out some other version unless the
  --force flag is given. Excessive use of --force is not a good thing.
  If the user is aware of the problem, and checking out old versions is
  a common operation, toggling the suggested option might be a good
  solution.

Maybe I misunderstand something, but if you check out an older
version, the .gitattributes file will change to match the old version.
The old version should not have the conversion attributes set, and
should therefore result in a clean checkout?

True, there's no problem before the attribute change, but there is for commits between the attribute change and when the repository got normalized (which can be a while with the current git).

Re: configuration option naming:

  I've settled for core.normalizationPolicy, with the values
  'strict' (default) for the behaviour requested by you and Jonathan,
  and 'relaxed' for my initial behaviour.

Teaser:

  $ git init foo
  warning: templates not found /home/grubba/share/git-core/templates
  Initialized empty Git repository in /tmp/grubba/foo/.git/
  $ cd foo
  $ cat >expanded-keywords
  $Id: some id string $
  $ git add expanded-keywords
  $ git commit -m 'Initial commit.'
  [master (root-commit) 755d1f6] Initial commit.
   1 files changed, 1 insertions(+), 0 deletions(-)
   create mode 100644 expanded-keywords
  $ git status
  # On branch master
  nothing to commit (working directory clean)
  $ cat >.gitattributes
  * ident
  $ git status
  # On branch master
  # Changed but not updated:
  #   (use "git add <file>..." to update what will be committed)
  #   (use "git checkout -- <file>..." to discard changes in working directory)
  #
  #       modified:   expanded-keywords
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       .gitattributes
  no changes added to commit (use "git add" and/or "git commit -a")
  $ git config core.normalizationPolicy relaxed
  $ git status
  # On branch master
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       .gitattributes
  nothing added to commit but untracked files present (use "git add" to track)
  $ git config core.normalizationPolicy strict
  $ git status
  # On branch master
  # Changed but not updated:
  #   (use "git add <file>..." to update what will be committed)
  #   (use "git checkout -- <file>..." to discard changes in working directory)
  #
  #       modified:   expanded-keywords
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       .gitattributes
  no changes added to commit (use "git add" and/or "git commit -a")
  $ rm .gitattributes
  $ git status
  # On branch master
  nothing to commit (working directory clean)

Which I believe matches all the behaviours that have been requested.

--
Henrik Grubbström					grubba@xxxxxxxxxx
Roxen Internet Software AB				grubba@xxxxxxxxx

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]