Ignore a folder based on its content (e.g., folders that contain a .git)

help

#1

Is there a possibility to ignore a whole folder based on its contents?
I have synced my whole documents folder to owncloud, but I want to exclude all git-repositories that are scattered within the documents-folder. I know I can exclude the .git-subfolders easily, but can I also ignore the whole folder containing my working copy based on the fact that it includes a .git-subfolder?

Steps to reproduce
1. Create a subfolder "project" in a synced folder
2. Initialize a git-repository in that subfolder

Expected behaviour
The whole subfolder "project" does not get synced to owncloud

Actual behaviour
I can ignore the .git-folder within "project" using ignored files editor (matching ".git"), but I would have to explicitly exclude "project" if I don't want it to get synced.


#2

You can use the "Ignored Files Editor" with a star behind the directory: https://doc.owncloud.org/desktop/2.2/architecture.html#ignored-files-label


#3

Thanks for the quick response. I am aware of the possibility of excluding each such directory individually, but I'd rather have one single pattern that excludes every directory that contains a file or folder with a specific name.


#4

Did you try Regular Expressions like in the link above? That should include all with a specific name or something which contains the name.


#5

The way I understand the pattern matching, that wouldn't really work. Let's assume I have two subfolders in my synced folder: "c-project" and "matlab_code".
Both folders are git-repositories and contain a ".git"-folder. The fnmatch-expression I can think of is:

*/.git

but this pattern matches only the ".git"-folders themselves, and neither "c-project" nor "matlab_code" is matched and thus excluded.
Maybe my understanding is wrong and there is an expression that also matches these two folders (and every other folder containing ".git"), but I have currently no idea what that expression would be (apart from explicitly excluding both folders as ignored files).


#6

You can use */, if you want to match all directories. */.git matches only all .git directories.
You would be able to use "*code/", if both directories would have a end with "code".


#7

I know that, but it doesn't answer my original question; can I exclude a folder based on its contents? (And not based on its name.)


#8

Only so like I explained and it is described in the link.


#9

I have exact the same problem. Did you find any suitable solution?