Subversion: как игнорировать файлы * .log [дублировать]

Краткий ответ: ваш метод foo() возвращается немедленно, а вызов $ajax() выполняется асинхронно после возврата функции . Проблема заключается в том, как и где сохранить результаты, полученные при вызове async, после его возврата.

В этом потоке было задано несколько решений. Возможно, самый простой способ - передать объект методу foo() и сохранить результаты в члене этого объекта после завершения асинхронного вызова.

function foo(result) {
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;   // Store the async result
        }
    });
}

var result = { response: null };   // Object to hold the async result
foo(result);                       // Returns before the async completes

Обратите внимание, что вызов foo() ] все равно не вернут ничего полезного. Однако результат асинхронного вызова теперь будет сохранен в result.response.

558
задан Peter Mortensen 15 April 2015 в 16:19
поделиться

14 ответов

(Этот ответ обновлен в соответствии с поведением SVN 1.8 и 1.9)

У вас есть 2 вопроса:

Маркировка файлов как игнорируемых:

Под «проигнорированным файлом» я подразумеваю, что файл не будет отображаться в списках даже как «неверсифицированный»: ваш SVN-клиент будет притворяться, что файл вообще не существует в файловой системе.

Игнорируемые файлы указаны в «шаблон файла». Синтаксис и формат шаблонов файлов объясняются в онлайн-документации SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Файл Шаблоны в Subversion ".

Subversion, начиная с версии 1.8 (июнь 2013 г.) и более поздних версий, поддерживает 3 разных способа указания шаблонов файлов. Ниже приведено резюме с примерами:

1 - Область настройки времени выполнения - global-ignores:

  • Это только настройка на стороне клиента, поэтому ваш список global-ignores выиграл
  • Этот параметр определен в вашем файле области Runtime Configuration Area: Windows (на основе файлов) - C:\Users\{you}\AppData\Roaming\Subversion\config Windows (на основе файлов) на основе реестра) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores как в HKLM, так и HKCU. Linux / Unix - ~/.subversion/config

2 - Свойство svn:ignore, которое установлено в каталогах (а не в файлах):

  • Это сохраняется в пределах репо, поэтому другие пользователи будут иметь одинаковые файлы игнорирования. Аналогично тому, как работает .gitignore.
  • svn:ignore применяется к каталогам и нерекурсивна или унаследована. Любой файл или немедленный подкаталог родительского каталога, который соответствует шаблону файла, будет исключен.
  • В то время как SVN 1.8 добавляет понятие «унаследованные свойства», свойство svn:ignore игнорируется в каталогах, не связанных с непосредственным потомком:
    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    
    (Таким образом, файл ./subdirectory/ignoreThis не игнорируется, хотя «ignoreThis.txt» применяется к корню репо ..
  • Поэтому, для рекурсивного применения списка игнорирования вы должны использовать svn propset svn:ignore <filePattern> . --recursive. Это создаст копию свойства в каждом подкаталоге. Если в дочернем каталоге значение <filePattern> отличается от другого, значение ребенка полностью переопределяет родителей, поэтому эффекта аддитивности нет. Поэтому, если вы измените <filePattern> на корне ., вы должны изменить его с помощью --recursive, чтобы перезаписать его в дочерних и потоковых каталогах.
  • Я отмечаю, что синтаксис командной строки является интуитивно понятным. Я начал с предположения, что вы проигнорируете файл в SVN, набрав что-то вроде svn ignore pathToFileToIgnore.txt, однако это не так, как работает функция игнорирования SVN.

3- Свойство svn:global-ignores. Требуется SVN 1.8 (июнь 2013 г.):

  • Это похоже на svn:ignore, за исключением того, что использует функцию «унаследованных свойств» SVN 1.8.
  • Сравните с svn:ignore, шаблон файла автоматически применяется в каждом каталоге потомков (а не только непосредственно для детей). Это означает, что нет необходимости устанавливать svn:global-ignores с флагом --recursive, поскольку унаследованные шаблоны игнорируемых файлов автоматически применяются по мере их унаследования.
  • Выполнение того же набора команд, что и в предыдущем примере, но с использованием svn:global-ignores вместо:
    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

Для пользователей TortoiseSVN:

Вся эта схема меня сбила с толку, потому что терминология TortoiseSVN (используемая в их системе меню Windows Explorer) изначально вводила меня в заблуждение - я не был уверен, что значение меню «Игнорировать» «Добавить рекурсивно», «Добавить *» и «Добавить " опции. Надеюсь, что в этом сообщении объясняется, как функция Игнорировать связана с функцией SVN Properties. Тем не менее, я предлагаю использовать командную строку для установки игнорируемых файлов, чтобы вы почувствовали, как это работает, вместо использования графического интерфейса, и только с помощью графического интерфейса для управления свойствами после удобного использования командной строки.

Листинг файлов, которые игнорируются:

Команда svn status скроет проигнорированные файлы (то есть файлы, соответствующие шаблону RGA global-ignores, или сопоставив исходный родительский каталог svn:ignore шаблон или соответствие любому шаблону svn:global-ignores каталога ancesor.

Используйте опцию --no-ignore, чтобы просмотреть перечисленные файлы. Игнорируемые файлы имеют статус I, а затем выводят вывод на grep только показывающие строки, начинающиеся с «I».

Команда:

svn status --no-ignore | grep "^I"

Например:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

ta-da!

662
ответ дан Zulan 23 August 2018 в 21:44
поделиться

Используйте команду svn status на вашей рабочей копии, чтобы показать статус файлов, файлы, которые еще не находятся под управлением версией (и не игнорируются), будут иметь вопросительный знак рядом с ними.

Что касается игнорируя файлы, необходимые для редактирования свойства svn: ignore, прочитайте главу «Игнорирование неверсированных элементов в svnbook в ]. .html . В книге также описано больше об использовании статуса svn.

2
ответ дан Andreas Holstenson 23 August 2018 в 21:44
поделиться

Кроме того, если вы используете Tortoise SVN, вы можете это сделать:

  1. В контекстном меню выберите «TortoiseSVN», затем «Свойства»
  2. В появившемся окне нажмите «Создать », затем« Дополнительно »
  3. В появившемся окне напротив« Имя свойства »выберите или введите« svn: ignore », напротив« Значение свойства »введите имя или имя папки или маску файла (в моем Случай был «* / target»), нажмите «Применить свойство рекурсивно»
  4. Хорошо. Хорошо.
  5. Commit
6
ответ дан bzlm 23 August 2018 в 21:44
поделиться
  1. откройте вы используете продукт JetBrains (т. е. Pycharm)
  2. , затем нажмите кнопку фиксации на верхней панели инструментов или используйте сочетание клавиш ctrl + k screenshot_toolbar
  3. на интерфейсе фиксации, переместите нежелательные файлы в другой список изменений следующим образом. screenshot_commit_change
  4. в следующий раз, когда вы можете только фиксировать список изменений по умолчанию.
0
ответ дан G. Googol 23 August 2018 в 21:44
поделиться

Используйте следующую команду для создания списка, не содержащего файлы управления версиями.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

Затем отредактируйте файл, чтобы оставить только файлы, которые вы хотите фактически игнорировать. Затем используйте это, чтобы игнорировать файлы, перечисленные в файле:

svn propset svn:ignore -F ignoring.txt .

Обратите внимание на точку в конце строки. Он сообщает SVN, что свойство устанавливается в текущем каталоге.

Удалить файл:

rm ignoring.txt

Наконец, commit,

svn ci --message "ignoring some files"

Вы можете затем проверьте, какие файлы игнорируются с помощью:

svn proplist -v
73
ответ дан icc97 23 August 2018 в 21:44
поделиться

Другое решение:

svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt

или строка за строкой

svn st | awk '/^?/{print $2}' > svnignore.txt 
svn propget svn:ignore >> svnignore.txt 
svn propset svn:ignore -F svnignore.txt . 
rm svnignore.txt

Что он делает:

  1. Получает файлы состояния из svn
  2. Сохраняет все файлы? к файлу «svnignore.txt»
  3. Получает уже проигнорированные файлы и добавляет их в файл «svnignore.txt»
  4. Сообщает svn игнорировать файлы в «svnignore.txt» "
  5. Удаляет файл
8
ответ дан Jim 23 August 2018 в 21:44
поделиться

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

Они автоматически вставлены, если вы используете tab-autocomplete для linux для создания файл для начала:

svn propset svn:ignore 'file1
file2' .
9
ответ дан Kenneth 23 August 2018 в 21:44
поделиться
35
ответ дан nbro 23 August 2018 в 21:44
поделиться

svn status сообщит вам, какие файлы не находятся в SVN, а также то, что было изменено.

Посмотрите на свойства SVN для свойства ignore.

Для всех вещей SVN требуется Красная книга .

20
ответ дан Peter Mortensen 23 August 2018 в 21:44
поделиться

Вы также можете установить глобальный шаблон игнорирования в файле конфигурации SVN.

3
ответ дан petr k. 23 August 2018 в 21:44
поделиться

Если вы используете TortoiseSVN , щелкните правой кнопкой мыши файл, а затем выберите TortoiseSVN / Добавить в список игнорирования. Это добавит файл / подстановочный знак в свойство svn:ignore.

svn:ignore будет проверяться при проверке файлов, и соответствующие файлы будут проигнорированы. У меня есть следующий список игнорирования для проекта Visual Studio .NET:

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

Этот список можно найти в контекстном меню в TortoiseSVN / Properties.

46
ответ дан Rory O'Kane 23 August 2018 в 21:44
поделиться

SVN ignore легко управляется в TortoiseSVN. Откройте TortoiseSVN и щелкните правой кнопкой мыши по файловому меню, затем выберите Добавить в список игнорирования.

Это добавит файлы в свойство svn:ignore. Когда мы проверяем файлы, то файл, который сопоставляется с svn:ignore, который будет проигнорирован и не будет зафиксирован.

В проекте Visual Studio мы добавили следующие файлы для игнорирования:

bin obj
*.exe
*.dll
*.pdb
*.suo

Мы успешно управляем исходным кодом SVN Comparetrap с помощью этого метода

2
ответ дан Slack 23 August 2018 в 21:44
поделиться

Как никто, кажется, не упомянул об этом ...

svn propedit svn:ignore .

Затем отредактируйте содержимое файла, чтобы указать шаблоны для игнорирования, выйти из редактора, и все готово.

9
ответ дан Yorick 23 August 2018 в 21:44
поделиться
  1. cd ~ / .subversion
  2. open config
  3. найти строку типа «global-ignores»
  4. set игнорировать тип файла следующим образом: global-ignores = * .o * .lo * .la * .al .libs * .so .so. [0-9] * .pyc * .pyo 88 * .rej ~ # #. # *. *. swp .DS_Store node_modules output
2
ответ дан 范陆离 23 August 2018 в 21:44
поделиться
Другие вопросы по тегам:

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