Игнорирование каталогов, подкаталогов и файлов после того, как они были инициализированы - PullRequest
0 голосов
/ 15 сентября 2011

Я использую Ruby on Rails, гем Capistrano и git. Давным-давно я инициализировал git и в файле .gitignore я указал следующее:

.bundle
db/*.sqlite3
log/*.log
tmp/

Однажды я создал подкаталог в каталоге /public моего приложения RoR: /public/users/.... Теперь в последнем каталоге у меня следующая структура файловой системы:

/public/users/001/file1.png
/public/users/001/file2.png
/public/users/001/file3.png
...
/public/users/002/file1.png
/public/users/002/file2.png
/public/users/002/file3.png
...
...

В настоящее время git отслеживает все файлы в каталоге /public, включая все каталоги и файлы внутри /public/users/. Поэтому при развертывании с Capistrano все они также будут обновлены на удаленной машине.

Я хотел бы больше не отслеживать public/users каталогов, подкаталогов и файлов (на моей локальной машине), чтобы на удаленной машине они не обновлялись . То есть я хотел бы сделать возможным, чтобы при развертывании с Capistrano все, что связано с public/users (на удаленной машине), не затрагивалось.

Как я могу это сделать?

P.S .: Я прочитал много других вопросов и ответов (например: 1 , 2 , ...), но все они, кажется, не работают для меня.


Я почти уверен, что должен добавить следующую текстовую строку в файл .gitignore:

# Ignoring "public/users/" directories, sub-directories and files
public/users/

и затем (если приведенный выше код действителен), что мне делать?

1 Ответ

1 голос
/ 15 сентября 2011

Попытайтесь поместить все файлы, относящиеся к пользователю, в одну папку, скажем system, затем вы можете поместить public/system/*.* в git ignore .. тогда ваша структура dir будет:

  public
      ->404.html
      ->js.../..,..,..
      ->css ../..,..,..
      ->system
         ->users
             ->1/something
             ->2/something 
         ->some-other-user-related-info

Кроме того, зачем это нужно?поместить файлы, относящиеся к разработке, в git, а затем на сервер ??Нет смысла .. так что не делайте этого .. Это увеличит размер вашего репо без всякой причины.

Поскольку вы используете capistrano, ваша структура dir сервера будет выглядеть следующим образом:

APP
   ->Current
   ->releases
   ->shared

Ваша общедоступная / системная папка будет продолжать указывать на общий / системный

case 1: файлы в пользователях / не зафиксированы, поместить все файлы, относящиеся к пользователю, в .gitignore

case 2: если файлы были зафиксированывыполнить git delete и затем выполнить коммит, затем добавить его в .git ignore

...