Git не будет игнорировать каталог

Короткий ответ на ваш вопрос - «нет».

В строгом смысле, на уровне базы данных подготовленные операторы позволяют привязывать параметры только к битам «values» инструкции SQL.

. Один из способов думать об этом - «вещи, которые можно заменить во время выполнения инструкции без изменения ее значения». Имя (и) таблицы не является одним из этих значений времени выполнения, поскольку оно определяет правильность самого оператора SQL (то есть, какие имена столбцов являются допустимыми) и изменение его во время выполнения потенциально может изменить, является ли оператор SQL действительным.

На немного более высоком уровне даже в интерфейсах базы данных, которые эмулируют подстановку подготовленного оператора, а не фактически посылают подготовленные операторы в базу данных, такие как PDO, которые могли бы позволить вам использовать местозаполнитель в любом месте (поскольку placeholder заменяется перед отправкой в ​​базу данных в этих системах), значение заполнителя таблицы будет строкой и вложено как таковое в SQL, отправленное в базу данных, поэтому SELECT * FROM ? с mytable в качестве параметра на самом деле заканчивается (f4) в базу данных, которая является недопустимой SQL.

Лучше всего продолжать работу с

SELECT * FROM {$mytable}

, но вы абсолютно должны иметь белый список таблиц что вы сначала проверяете, если $mytable поступает с пользовательского ввода.

13
задан Clock 29 December 2009 в 04:24
поделиться

2 ответа

Не упоминайте каталоги в вашем .gitignore, только файлы. Делая это и явно добавляя каталоги, которые вы хотите отслеживать, вы получите то, что хотите:

$ cat > .gitignore << EOF
*
!bar
EOF
$ git add -f iwantthesefiles

Это позволит git'у отслеживать бар и всё, что находится в каталоге iwanthesefiles.

2
ответ дан 1 December 2019 в 19:23
поделиться

Git ведёт себя таким образом: он не будет игнорировать файл, находящийся в репозитории. Также, чтобы исключить каталоги, заканчивайте на косой чертеж. Как вы можете видеть в следующем примере, отслеживались только iwantthesefiles/baz.

$ cat .gitignore
*/
!iwantthesefiles
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       iwantthesefiles/baz
nothing added to commit but untracked files present (use "git add" to track)
$ ls -lhR
.:
total 8.0K
drwxr-xr-x 2 user group 4.0K 2009-12-29 14:24 idonntwantthesefiles
drwxr-xr-x 2 user group 4.0K 2009-12-29 14:24 iwantthesefiles

./idonntwantthesefiles:
total 0
-rw-r--r-- 1 user group 0 2009-12-29 14:22 bar
-rw-r--r-- 1 user group 0 2009-12-29 14:24 baz

./iwantthesefiles:
total 0
-rw-r--r-- 1 user group 0 2009-12-29 14:24 baz
-rw-r--r-- 1 user group 0 2009-12-29 14:19 foo
$ rm -r * && git reset --hard && ls -lhR
HEAD is now at 698c66a monkey
.:
total 4.0K
drwxr-xr-x 2 user group 4.0K 2009-12-29 14:25 iwantthesefiles

./iwantthesefiles:
total 0
-rw-r--r-- 1 user group 0 2009-12-29 14:25 foo

И, чтобы продемонстрировать, что отслеживаемый файл переопределяет .gitignore:

$ mkdir idonntwantthesefiles
$ touch idonntwantthesefiles/baz
$
git add idonntwantthesefiles/baz
$ git commit -m 'llama'
Created commit a62b6d5: llama
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 idonntwantthesefiles/baz
$ echo foobar > idonntwantthesefiles/baz
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   idonntwantthesefiles/baz
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
no changes added to commit (use "git add" and/or "git commit -a")
0
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: