Как я могу сказать, является ли данный каталог частью мерзавца respository?
(Следующее находится в Python, но удар или что-то были бы прекрасны.)
os.path.isdir('.svn')
скажет Вам, если текущим каталогом будет управлять Подверсия. Подвижный и Мерзавец просто имеют .hg/.git наверху репозитория, таким образом, для hg
Я могу использовать
os.system('hg -q stat 2> /dev/null > /dev/null') == 0)
но git status
возвращает ненулевое (ошибка) статус выхода, если ничто не изменяется.
Выполняет итерации поиска пути .git
самостоятельно лучшее я могу сделать?
EDIT : Просто уточните. Построение динамического sql в sp, конечно, может быть столь же опасным, как и в приложении, но привязка пользовательских входов в запрос защитит вас от sql injection, как описано здесь (обсуждение для Oracle, но принцип применим в другом месте):
http://asktom.oracle.com/pls/asktom/f?p=100: 11:0:::: P11 _ QUESTION _ ID: 23863706595353
-121--4631881-Это не динамический SQL проблема (весь sql является динамическим в Oracle на самом деле - даже статический sql в pro * c/plsql!). Это " "этого sql, который является проблема. Если пользователь дает вам входные данные - они должны быть ПРИВЯЗАНЫ к запросу -- не конкатенирован. Второй ты объединение пользовательского ввода в SQL - это как если бы вы дали им возможность передать вам код и вы выполнить этот код. Простой и простой.
Пусть массивы выполняют задание:
public static void main(String[] args) {
Object[] numbers = new Object[100];
Arrays.fill(numbers, new Object() {
private int count = 0;
@Override
public String toString() {
return Integer.toString(++count);
}
});
System.out.println(Arrays.toString(numbers));
}
-121--1851162- В системе ruby («git rev-parse»)
возвращается значение true, если текущий каталог находится в гит-репо, и false в противном случае. Я думаю, что пифонический эквивалент должен работать аналогично.
EDIT: Достаточно:
# in a git repo, running ipython
>>> system('git rev-parse')
0
# not in a git repo
>>> system('git rev-parse')
32768
Обратите внимание, что есть некоторые выходные данные на STDERR, когда вы не находитесь в репо, если это имеет для вас значение.
Просто нашел это в Git Help Rev-Parse
git rev-parse --is-inside-work-tree
Prints True
Если оно находится в дереве Работа, False
] Если это в дереве «.git» и фатальная ошибка, если это ни один. Оба «TRUE» и «FALSE» напечатаны на STDOUT с состоянием выхода 0, фатальная ошибка напечатана на STDERR с состоянием выхода 128.
Для записи, используйте статус Git или подобное, это только для полноты ::)
поиск вверх дерево не имеет большого значения, в Bash вы можете сделать этот простой одноклассник (если вы положите его на один Линия ...);) Возвращает 0, если кто-то найден, 1 иначе.
d=`pwd`
while [ "$d" != "" ]; do
[ -d "$d"/.git ] && exit 0
d=${d%/*}
done
exit 1
Поиск в поисках папки .git.
Ну, каталог также можно игнорировать файлом .gitignore - поэтому вам нужно проверить для репозитория .git, и если есть один, анализировать .gitignore, чтобы увидеть, действительно ли этот каталог в репозитории Git.
Что именно вы хотите сделать? Там может быть более простая способ сделать это.
Редактировать: Вы имеете в виду: «Это каталог корень репозитория Git» или, вы имеете в виду «это каталог часть репозитория Git»?
для первого, тогда просто проверьте, есть ли. Гит - поскольку Это в корне, и вы закончите. Для второго, как только вы определили, что вы находитесь в репозитории Git, вам нужно проверить .gitignore для подкаталого оказания.
Добавьте это к вашему .bash_profile, и ваша подсказка всегда будет отображать активную ветку GIT и независимо от того, будут ли вы незаконные изменения.
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
export PS1=' \[\033[0;33m\]\w\[\033[00m\]\[\033[01;00m\]$(parse_git_branch): ' #PS1='\w> '
Вы увидите это:
~:
~: cd code/scala-plugin/
~/code/scala-plugin[master*]: