Re: [PATCH 2/2] check-attr: move to the top of working tree when in non-bare repository

2014-02-16 Thread Michael Haggerty
On 02/06/2014 09:17 PM, Jonathan Nieder wrote:
 How do I use the only-look-at-HEAD mode from a non-bare repo?  If I
 want attributes with respect to some other commit instead of HEAD, is
 there a syntax for that?  The command doesn't seem to have been well
 thought out.

I agree that it would be nice for git check-attr to handle this case.
 Currently, I believe that one has to resort to a temporary index file
via something like

(
export GIT_INDEX_FILE=$(mktemp)
git read-tree HEAD
git check-attr --cached ...
rm $GIT_INDEX_FILE
)

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu
http://softwareswirl.blogspot.com/
--
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 2/2] check-attr: move to the top of working tree when in non-bare repository

2014-02-06 Thread Junio C Hamano
Lasse Makholm noticed that running git check-attr from a place
totally unrelated to $GIT_DIR and $GIT_WORK_TREE does not give
expected results.  I think it is because the command does not say it
wants to call setup_work_tree().

We still need to support use cases where only a bare repository is
involved, so unconditionally requiring a working tree would not work
well.  Instead, make a call only in a non-bare repository.

We may want to see if we want to do a similar fix in the opposite
direction to check-ignore.  The command unconditionally requires a
working tree, but it should be usable in a bare repository just like
check-attr attempts to be.

Signed-off-by: Junio C Hamano gits...@pobox.com
---
 builtin/check-attr.c  |  3 +++
 t/t0003-attributes.sh | 10 ++
 2 files changed, 13 insertions(+)

diff --git a/builtin/check-attr.c b/builtin/check-attr.c
index 075d01d..f29d6c3 100644
--- a/builtin/check-attr.c
+++ b/builtin/check-attr.c
@@ -94,6 +94,9 @@ int cmd_check_attr(int argc, const char **argv, const char 
*prefix)
struct git_attr_check *check;
int cnt, i, doubledash, filei;
 
+   if (!is_bare_repository())
+   setup_work_tree();
+
git_config(git_default_config, NULL);
 
argc = parse_options(argc, argv, prefix, check_attr_options,
diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index 0554b13..6e6aef5 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -196,6 +196,16 @@ test_expect_success 'root subdir attribute test' '
attr_check subdir/a/i unspecified
 '
 
+test_expect_success 'using --git-dir and --work-tree' '
+   mkdir unreal real 
+   git init real 
+   echo file test=in-real real/.gitattributes 
+   (
+   cd unreal 
+   attr_check file in-real --git-dir ../real/.git --work-tree 
../real
+   )
+'
+
 test_expect_success 'setup bare' '
git clone --bare . bare.git
 '
-- 
1.9-rc2-233-ged4ee9f

--
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 2/2] check-attr: move to the top of working tree when in non-bare repository

2014-02-06 Thread Jonathan Nieder
Hi,

Junio C Hamano wrote:

 --- a/builtin/check-attr.c
 +++ b/builtin/check-attr.c
 @@ -94,6 +94,9 @@ int cmd_check_attr(int argc, const char **argv, const char 
 *prefix)
   struct git_attr_check *check;
   int cnt, i, doubledash, filei;
  
 + if (!is_bare_repository())
 + setup_work_tree();

Hm.  Shouldn't check-attr error out when run without a worktree and
without --cached?

That would mean something like

diff --git i/builtin/check-attr.c w/builtin/check-attr.c
index e9af7b2..c34b6ee 100644
--- i/builtin/check-attr.c
+++ w/builtin/check-attr.c
@@ -107,6 +107,9 @@ int cmd_check_attr(int argc, const char **argv, const char 
*prefix)
argc = parse_options(argc, argv, prefix, check_attr_options,
 check_attr_usage, PARSE_OPT_KEEP_DASHDASH);
 
+   if (!cached_attrs)
+   setup_work_tree();
+
if (read_cache()  0) {
die(invalid cache);
}
--
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 2/2] check-attr: move to the top of working tree when in non-bare repository

2014-02-06 Thread Jonathan Nieder
Hi again,

Jonathan Nieder wrote:
 Junio C Hamano wrote:

 +if (!is_bare_repository())
 +setup_work_tree();

 Hm.  Shouldn't check-attr error out when run without a worktree and
 without --cached?
 
 That would mean something like
 
 diff --git i/builtin/check-attr.c w/builtin/check-attr.c
 index e9af7b2..c34b6ee 100644
 --- i/builtin/check-attr.c
 +++ w/builtin/check-attr.c
 @@ -107,6 +107,9 @@ int cmd_check_attr(int argc, const char **argv, const 
 char *prefix)
   argc = parse_options(argc, argv, prefix, check_attr_options,
check_attr_usage, PARSE_OPT_KEEP_DASHDASH);
  
 + if (!cached_attrs)
 + setup_work_tree();

Someone asked in a private reply how this interacts with t0003.

t0003 tries check-attr in a bare repository.  The question is, is that
a desirable feature, and are people relying on it?  If people are
relying on it, perhaps the intuitive behavior would be to make
check-attr use an only-look-at-HEAD mode by default when running in a
bare repo.

How do I use the only-look-at-HEAD mode from a non-bare repo?  If I
want attributes with respect to some other commit instead of HEAD, is
there a syntax for that?  The command doesn't seem to have been well
thought out.

Hope that helps,
Jonathan
--
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 2/2] check-attr: move to the top of working tree when in non-bare repository

2014-02-06 Thread Junio C Hamano
Jonathan Nieder jrnie...@gmail.com writes:

 Someone asked in a private reply how this interacts with t0003.

It was me mistakenly using reply not reply all.

 t0003 tries check-attr in a bare repository.  The question is, is that
 a desirable feature, and are people relying on it?

Running tar-tree from a public distribution point comes to mind.
bootstrap-attr-stack seems to have reference to is-bare-repository
to validate the attribute direction to read from the index, but I
tend to think what it really wants is to read from HEAD not the
index.

 How do I use the only-look-at-HEAD mode from a non-bare repo?

Is You don't a good answer?

Use of --cached when your index matches HEAD is the equivalent, and
if the index differs from HEAD, you must have had a reason to add
that change to .gitattributes to the index, so I think it is
reasonable to honour that change.
--
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