2015-09-16 28 views
7

Chciałbym powiedzieć git, aby zignorować plik o nazwie foo.ext wtedy i tylko wtedy, gdy istnieje inny plik o nazwie foo.txe. Jestem prawie pewien, że nie da się tego zrobić przy użyciu składni .gitignore, ale może są inne trudne sposoby, o których nie myślę?Jak powiedzieć git, aby ignorował określony plik tylko wtedy, gdy istnieje inny plik?

Przykład użycia: Często zapisuję dane dokumentu LaTeX w podkatalogu o nazwie figures. I zwykle projektuję swoje figury z Xfig. Moje makefile wywołuje fig2dev wygenerować parę plików ze źródła figures/foo.fig:

  • figures/foo.pdf, plik PDF dla części graficznej,
  • figures/foo.pdf_t, plik LaTeX dla tekstu, z poleceniem includegraphics aby zaliczyć PDF.

Ponieważ te dwa pliki są generowane, chciałbym je zignorować podając git. Mogę dodać dwa proste wzory wykluczeń do mojego pliku .gitignore, ale zdarza się również, że niektóre z moich liczb są w zwykłym pliku PDF, a nie generowane z innego źródła. I oczywiście chciałbym, aby nie ignorować tych plików git.

Chciałbym dodać coś takiego:

/\(**\)/figures/\(*\).fig: /\1/figures/\2.pdf /\1/figures/\2.pdf_t 

do mojego pliku .gitignore, co oznacza, że ​​każdy plik o nazwie /<some_path>/figures/<some_name>.pdf lub /<some_path>/figures/<some_name>.pdf_t będą ignorowane tylko wtedy, gdy plik o nazwie /<some_path>/figures/<some_name>.fig istnieje z tego samego <some_path> i <some_name>.

+0

Możliwa duplikat [Gitignore pliku, jeśli plik z innym rozszerzeniem istnieje] (http://stackoverflow.com/questions/28325195/gitignore-a-file-if-file- with-different-extension-exists) –

Odpowiedz

2

Będziesz musiał użyć czegoś w nazwie pliku lub folderze, aby określić, jakie pliki są generowane automatycznie, a które nie. W zależności od konfiguracji twojego kodu możesz go zignorować na podstawie folderu. Na przykład użyj pliku figure-auto dla pliku generowanego automatycznie i figure dla ręcznie utworzonych.

figure-auto/

Jeśli masz tylko kilka plików, które nie chcą ignorować można użyć

figures/*.pdf 
figures/*.pdf_t 
!figures/keep-in-source-control.pdf 
!figures/manually-created.pdf 

Git Ignore Pattern Format

+0

Wiem, jak używać '.gitignore' i to nie jest to, czym byłem szukam, ale dzięki, doceniam y nasza pomoc. –