SVN: контроль/экспорт только структура каталогов

Прежде всего: существуют шаблоны плагинов, вам следует поискать в сети «vim template plugin». Возможно, вы найдете что-то полезное.

Если вы хотите сделать это самостоятельно:

Создайте файл шаблона следующим образом (я принимаю ~/tmpl/tmpl.cpp в качестве имени):

/* 
 * Author :  <<name>>
 * Date   :  <<date>>
 */

и в вашем vimrc:

function AddTemplate(tmpl_file)
    exe "0read " . a:tmpl_file
    let substDict = {}
    let substDict["name"] = $USER
    let substDict["date"] = strftime("%Y %b %d %X")
    exe '%s/<<\([^>]*\)>>/\=substDict[submatch(1)]/g'
    set nomodified
    normal G
endfunction

autocmd BufNewFile *.c,*.cc,*.cpp,*.h call AddTemplate("~/tmpl/tmpl.cpp")

set nomodified сообщает Vim, что файл не был изменен. Таким образом, вы можете выйти из файла с помощью :q, если вы не добавите дополнительный текст. Полезно, если вы ввели неверное имя файла.

Если вы хотите воздействовать только на файлы в специальном каталоге ~/project, вы можете добавить следующее в начале функции AddTemplate:

let fully_qualified_file = expand('%:p')
if 0 != match(fully_qualified_file, $HOME . '/project/.*')
    return
endif
35
задан Makoto 22 March 2015 в 04:59
поделиться

6 ответов

Существует сценарий Python в contrib инструментах подверсии , который создает структуру каталогов с пустыми файлами. С определенным знанием Python это не должно быть к трудно для пропуска создания файлов вообще.

5
ответ дан martin clayton 27 November 2019 в 15:39
поделиться
svn ls -R {svnrepo} | grep "/$" | xargs -n 1 mkdir -p

Экспорт, не контроль.

[Обновленный]

С контролем:

env REPO={repo} sh -c 'svn ls -R $REPO | grep "/\$" | xargs -n 1 svn co --depth=empty $REPO'

Это будет довольно медленно для чего-либо слишком большого.

13
ответ дан Gregor 27 November 2019 в 15:39
поделиться

SVN не может сделать этого по сути, но если Вы просто хотите к структуре каталога экспорта, попробуйте svn ls -R --xml, чтобы получить список XML структуры каталогов и затем воссоздать его вручную.

4
ответ дан Anton Gogolev 27 November 2019 в 15:39
поделиться

Я не вижу, что существует способ сделать это от беглого взгляда в svn help co. Что-то, что я сделал прежде для обновления репозитория от новой версии загруженной библиотеки (т.е. ответвление поставщика) должно удалить все, что не является .svn папкой:

#!/bin/sh
find ./ -type f | grep -v .svn | xargs rm -f

не особенно эффективно, если Вы старались не иметь необходимость проверить те файлы во-первых, но это должно иметь тот же результат.

0
ответ дан Mike Houston 27 November 2019 в 15:39
поделиться

Нет никакого способа сделать это, и на самом деле это - немного нечетная вещь хотеть сделать, поэтому теперь мне любопытно!

Это не может быть релевантно, но Вы можете предотвращать файлы, фиксировавшие во-первых путем добавления свойства svn:ignore на соответствующих каталогах. Это особенно полезно для предотвращения сгенерированных артефактов, таких как документация или фиксировавшие файлы кэша.

-1
ответ дан 12345 27 November 2019 в 15:39
поделиться

Вы можете указать - нерекурсивный в команде оформления заказа, это может помочь вам получить то, что вы хотите.

9
ответ дан 27 November 2019 в 15:39
поделиться
Другие вопросы по тегам:

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