"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Sebastien Marie <semarie@online.fr>
Subject:
got ignore some .{cvs,git}ignore files
To:
gameoftrees@openbsd.org
Date:
Tue, 23 Jun 2020 08:59:23 +0200

Download raw body.

Thread
Hi,

I have a buggy behaviour (or an unexpected feature) with .cvsignore files.

I slightly modified the regress for test_status_cvsignore to expose it.

In the (modified) regress test, the files in worktree are (for what I want to
expose):

/.cvsignore
/foo
/epsilon/foo

The .cvsignore contains "foo" as ignored. "/foo" and "/epsilon/foo" are
unversionned.

if `got status' is fine, running `got status epsilon' is wrong ("/epsilon/foo"
is showed as unversionned instead being ignored).

For what I see from the behaviour, in the first command, "/" directory is
walked, so "/.cvsignore" is read (and "foo" pattern considered for ignorelist),
whereas in the second command, the "/" directory is not walked so "/.cvsignore"
isn't considered, resulting "/epsilon/foo" to be reported as unversionned.


Regress run:

$ cd regress/cmdline && make status
./status.sh
test_status_basic ok
test_status_subdir_no_mods ok
test_status_subdir_no_mods2 ok
test_status_obstructed ok
test_status_shows_local_mods_after_update ok
test_status_unversioned_subdirs ok
test_status_ignores_symlink ok
test_status_shows_no_mods_after_complete_merge ok
test_status_shows_conflict ok
test_status_empty_dir ok
test_status_empty_dir_unversioned_file ok
test_status_many_paths ok
test_status_cvsignore --- /tmp/got-test-status_cvsignore-t9lqQcrr/stdout.expected       Tue Jun 23 08:42:30 2020
+++ /tmp/got-test-status_cvsignore-t9lqQcrr/stdout      Tue Jun 23 08:42:30 2020
@@ -1,4 +1,5 @@
 ?  .cvsignore
 ?  epsilon/.cvsignore
 ?  epsilon/boo
+?  epsilon/foo
 ?  foop
test failed; leaving test data in /tmp/got-test-status_cvsignore-t9lqQcrr
test_status_gitignore ok


Please note that it could be also exposed with got repository itself:

$ cd got
$ cat .gitignore
**/obj
$ got st
M  regress/cmdline/status.sh
$ got st libexec/got-fetch-pack
?  libexec/got-fetch-pack/obj/error.d
?  libexec/got-fetch-pack/obj/error.o
?  libexec/got-fetch-pack/obj/got-fetch-pack
?  libexec/got-fetch-pack/obj/got-fetch-pack.d
?  libexec/got-fetch-pack/obj/got-fetch-pack.o
?  libexec/got-fetch-pack/obj/inflate.d
?  libexec/got-fetch-pack/obj/inflate.o
?  libexec/got-fetch-pack/obj/object_parse.d
?  libexec/got-fetch-pack/obj/object_parse.o
?  libexec/got-fetch-pack/obj/path.d
?  libexec/got-fetch-pack/obj/path.o
?  libexec/got-fetch-pack/obj/privsep.d
?  libexec/got-fetch-pack/obj/privsep.o
?  libexec/got-fetch-pack/obj/sha1.d
?  libexec/got-fetch-pack/obj/sha1.o

the "obj" directory is shown whereas present in .gitignore


Thanks.
-- 
Sebastien Marie



diff c34ec41754978e41240e8aedd4e5d3a9e6362635 /home/semarie/repos/openbsd/got
blob - 5abbce9475bb8bd2f1cbb3e33113883173026f03
file + regress/cmdline/status.sh
--- regress/cmdline/status.sh
+++ regress/cmdline/status.sh
@@ -496,6 +496,7 @@ function test_status_cvsignore {
 
 	echo "unversioned file" > $testroot/wt/foo
 	echo "unversioned file" > $testroot/wt/foop
+	echo "unversioned file" > $testroot/wt/epsilon/foo
 	echo "unversioned file" > $testroot/wt/epsilon/bar
 	echo "unversioned file" > $testroot/wt/epsilon/boo
 	echo "unversioned file" > $testroot/wt/epsilon/moo