Я работаю над Подвижным репозиторием, который проверяется на файловую систему Unix, такую как ext3 на некоторых машинах и FAT32 на других.
В Подверсии я могу установить svn:executable свойство, чтобы управлять, должен ли файл быть отмечен исполняемый файл при проверке на платформу, которая поддерживает такой бит. Я могу сделать это независимо от платформы, я работаю на SVN или файловой системе, содержащей мою рабочую копию.
В Подвижном я могу chmod +x для получения того же эффекта, если клон находится в файловой системе Unix. Но как я могу установить (или удалить), исполняемый файл обдумал файл в файловой системе FAT?
Mercurial отслеживает бит выполнения как часть метданных файла. Невозможно явно установить его в mercurial, но он отслеживает изменения, сделанные chmod
в unix. Для файлов, добавленных в Windows, по умолчанию будет установлен бит выполнения, но команда Windows attrib не позволяет вам их установить.
Если вы выполните hg log -p --git
, вы увидите формат патча, который показывает изменение бита выполнения, который выглядит следующим образом:
$ hg log --git -p
changeset: 1:0d9a70aadc0a
tag: tip
user: Ry4an Brase <ry4an-hg@ry4an.org>
date: Sat Apr 24 10:05:23 2010 -0500
summary: added execute
diff --git a/that b/that
old mode 100644
new mode 100755
changeset: 0:06e25cb66089
user: Ry4an Brase <ry4an-hg@ry4an.org>
date: Sat Apr 24 10:05:09 2010 -0500
summary: added no execute
diff --git a/that b/that
new file mode 100644
--- /dev/null
+++ b/that
@@ -0,0 +1,1 @@
+this
Если вы не можете чтобы перейти к системе unix и установить их, вы, вероятно, могли бы подделать такой патч и hg import
его, но это определенно неоптимально.
В настоящее время вы не можете изменить бит выполнения, если файловая система не поддерживает его (я планирую поддерживать его в будущем).