web-dev-qa-db-fra.com

fichiers .gitignore ajouté à l'intérieur des sous-modules git

J'ai récemment réorganisé mes dotfiles pour vivre dans un référentiel git à ~/Dropbox/dotfiles Et j'utilise un agent pathogène pour regrouper tous les addons Vim à l'intérieur ~/Dropbox/dotfiles/home/.vim/bundle. Ces advons ont été ajoutés sous forme de sous-modules git.

Maintenant, le problème est que lorsque j'exécute Vim, il génère automatiquement la documentation de tous les addons et les met à l'intérieur de chaque répertoire sous-codification. Cela ajoute du contenu non traqué aux sous-modules, que j'aimerais éviter.

Ruby-1.8.7-p330@gs ~/Dropbox/dotfiles ‹master*› $ git st
# 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   home/.vim/bundle/fuzzyfinder (untracked content)
#   modified:   home/.vim/bundle/l9 (untracked content)
#   modified:   home/.vim/bundle/matchit (untracked content)
#   modified:   home/.vim/bundle/Ruby (untracked content)
#   ...
no changes added to commit (use "git add" and/or "git commit -a")

J'ai essayé d'ajouter un .gitignore Fichier à la racine de mon référentiel Git pour ignorer tous les dossiers doc Dossiers à l'intérieur des sous-modules, mais cela ne semble pas fonctionner:

home/.vim/bundle/**/doc

Ma question: Y a-t-il un moyen d'ignorer les fichiers et les dossiers à l'intérieur des sous-modules git ou peut-être configurer Vim pour créer la documentation dans un dossier en dehors du référentiel Git?

EDIT: Comme Randy Morris a souligné, cela pourrait être un duplicata de générer des balises à un emplacement différent par pathogène

58
rubiii

Vous devriez ajouter .gitignore Dans chacun de vos sous-modules.
[.____] Depuis que lesdites sous-modules sont comme un repo git imbriqué, ils s'occupent de leurs propres règles ignorés et leur statut ne serait pas influencé par le .gitignore de la plante mère (comme expliqué ici ).

Pour un réglage spécifique à VIM, comme Randy Morris mentionne dans le commentaire, voir la SO QUESTION " Génération des balises à un emplacement différent par pathogène ".


Remarque: AS Nick mentionne dans ces commentaires, et comme illustré par la réponse à " génération de balises à différents emplacements par pathogène ", une configure comme:

[submodule "path/to/submodule"]
    path = path/to/submodule
    url = http://github.com/username/repo.git
    ignore = untracked  # <====

travaillera et rendra cette sous-module ignorée par git status.
[.____] mais "ignore = untracked " signifie au moins git1.7.2 .


Remarque: Nurettin Mentions dans les commentaires :

ignore = dirty l'a fait pour moi

commit aee9c7d Détails la différence entre untracked et dirty.

  • "dirty": seules les différences de la validation enregistrées dans le superprojet et les sous-modules HEAD seront considérées comme des modifications, Toutes les modifications apportées à l'arborescence de travail du sous-module seront ignorées .
    [.____] Lorsque vous utilisez cette valeur, le sous-module ne sera pas numérisé pour les modifications de l'arborescence de travail, ce qui entraîne une prestation de performance sur les grandes sous-modules .

  • "untracked": seuls les fichiers non traqués de l'arborescence de travail sous-modules sont ignorés, une modification HEAD et/ou modifié Les fichiers du sous-module le marqueront comme modifiés.

68
VonC

La réponse de Ben est un bon départ. Mais pour une telle règle d'ignorer spécifique, je n'aime pas le contexte global.

Préférez la configuration locale pour chaque sous-module et un fichier Ignore centralisé dans le référentiel de racines de sous-module:

cd .vim/bundle
echo "doc/tags" > .gitignore_submodules
git submodule foreach git config --local core.excludesfile "../.gitignore_submodules"
2
Jérôme