SVN для разработчиков Delphi

Можно представить следующий перевод для оценки функции (т. Е. Автомобиль не называет макрос или специальный оператор) выражения:

(foo arg1 arg2 ...)
~~~>
(funcall (function foo) arg1 arg2 ...)

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

В заключение отметим, что #'foo является сокращением от (function foo).

Это не так, как на самом деле работают, на практике или в спецификации, поскольку (function #'(setf foo)) совершенно допустимо и может вычислять функцию, существующую в одном, но ((setf foo) arg1 arg2 ...) не может быть допустимым вызовом функции.

Это, однако, объясняет, почему выражение, подобное (#'f x), недопустимо, и причина в том, что (function (function f)) не является допустимым выражением.

5
задан Community 23 May 2017 в 12:28
поделиться

8 ответов

  1. Да, Вы могли все еще заблокировать файлы, но это не рекомендуется. Необходимо установить свойство svn:needs-блокировки на всех файлах, которые Вы могли бы хотеть заблокировать так, они получают набор флага только для чтения, когда Вы проверяете. Но снова, это не рекомендуемый поток операций для текстовых файлов. Просто дайте потоку операций изменять-слияния попытку!
  2. Так как Вы используете TortoiseSVN: щелкните правой кнопкой по своей родительской папке, выберите "Commit". В диалоговом окне фиксации Вы будете видеть все файлы та фиксация потребности. Просто проверьте и myform.pas и myform.dfm файл для фиксации. Все проверенные файлы будут фиксироваться вместе, никакая потребность (и определенно не рекомендуемый!) для фиксации каждого файла индивидуально!
  3. См. 2. - Но необходимо прочитать замечательную книгу Подверсии сначала, чтобы познакомиться с понятием. Необходимо всегда фиксировать все файлы, которые принадлежат логическому изменению. Например, если Вы добавляете новые средства управления к своей форме и реализуете код для обработки его, у Вас могут быть больше, чем просто измененные файлы формы, но несколько файлов больше. Всегда фиксируйте все те файлы вместе, так как фиксация является логическим объектом.
  4. Вы не должны 'экспортировать', игнорируют настройки. Просто добавьте svn:ignored свойство. Это очень легко сделать с TortoiseSVN, как объяснено в документах.
18
ответ дан 18 December 2019 в 05:33
поделиться

Ре 5.: Необходимо испытать его. Для ограничения потенциала конфликта, это - очень хорошая идея для активного разработчика часто фиксировать, и для всех других обновлять часто от SVN. Установка почтовых уведомлений о фиксации может помочь много, так, чтобы все люди знали, когда обновить. Но сказавший, что - Вы найдете, что простое действие удаления управления и всех его обработчиков событий или добавления управления и нескольких обработчиков не приведет к конфликтам, которые необходимо разрешить вручную.

Править: Этот ответ DiGi указывает, что Delphi изменяет DFM, даже когда пользователь не сделал. Это не истинный IMO, поскольку простое изменение в метке времени DFM не квалифицирует как локальная модификация файла DFM, и SVN не будет фиксировать нового пересмотра. Нужно однако стараться не переместить формы в Delphi IDE, поскольку это изменит Вершину и / или свойства Left формы. Так же изменение активной страницы управления страницей рассчитало бы как локальная модификация. Прежде, чем фиксировать его - поэтому хорошая идея исследовать все локальные модификации и вернуться все те, которые просто случайны.

Редактирование 2: Как onnodb указанный в его комментарии, кажется, существуют свойства формы, которые действительно изменяются автоматически, по крайней мере, с Delphi 2007 (и вероятно позже?). Это подчеркнуло бы важность проверки всех локальных модификаций перед фиксацией.

6
ответ дан 18 December 2019 в 05:33
поделиться

Также посмотрите, Как я запускаю с рабочей Подверсии + Delphi? для некоторых инструментов SVN, которые также интегрируют в Delphi IDE.

4
ответ дан 18 December 2019 в 05:33
поделиться
  1. Да.

  2. TortoiseSVN автоматически отмечает все измененные файлы при управлении версиями, когда Вы фиксируете.

  3. См. 2.

  4. Очень легко создать черный список. Просто щелкните правой кнопкой по файлу, и Вы получаете опцию проигнорировать все файлы того типа файла.

При использовании Visual Studio можно использовать Анк SVN для интеграции IDE.

1
ответ дан 18 December 2019 в 05:33
поделиться

Файлы DFM не изменяются самостоятельно для меня.

Я не уверен, что другие люди делают в их dfm файлы, или какие настройки в Delphi могли бы вызвать это. У меня нет проблем. Только dfm файлы, которые я изменяю, перечислены (как изменено) в диалоговом окне Фиксации. Я использую Delphi 2007 и Delphi 7.

1
ответ дан 18 December 2019 в 05:33
поделиться

Я обычно использую этот небольшой сценарий Python прежде, чем обновить от SVN для очистки моего исходного дерева.

Я храню .dof файлы в SVN, таким образом, я должен фиксировать вручную любого .dof изменение прежде, чем убрать исходное дерево.

import os
import sys

exts = ['.~pas', '.~dpk', '.~bpl','.dcu', '.~dcu', '.dcp', '.~dcp',
        '.dof', '.cfg', '.res', '.~res']

def mydir():
    if __name__ == '__main__':
        filename = sys.argv[0]
    else:
        filename = __file__
    return os.path.abspath(os.path.dirname(filename))


def clean_dir(arg, dirname, names):
    for name in names:
      if os.path.splitext(name)[1].lower() in exts:
        file2delete = os.path.join(dirname,name)
        print os.path.join(file2delete)
        os.remove(file2delete)


if __name__=="__main__":
  print "Cleaning Tree"
  os.path.walk(mydir(), clean_dir, "a")
1
ответ дан 18 December 2019 в 05:33
поделиться

Разработчики могут использовать CommitMonitor для получения информации о новых фиксациях.

реклама 5: Это плохо, если два или больше разработчика используют тот же .dfm. Простые модификации могут работать (объединяются) прекрасный. важно фиксировать, только если Вы - действительно имевшее значение в файлах. Delphi обычно изменяет .dfm, даже Вы ничего не изменяете.

1
ответ дан 18 December 2019 в 05:33
поделиться

Вы могли нас SourceConexion. Это integratesin Delphi IDE. Это поддерживает блокировку файлов так, чтобы Вы не заканчивали в проблеме с файлами DFM.

Я использую TortoiseSVN при работе с C#, но в Delpi я нахожу хорошим использовать SC, так как я закончил с поврежденными файлами DFM после того, как более затем один разработчик сделал изменения в них..

0
ответ дан 18 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

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