SVN сцепляется для Windows

Вы можете объединить Counter с defaultdict , чтобы сделать это довольно эффективно, когда вы разбили словарь по дате. Итак, сначала разделим по дате:

from collections import Counter, defaultdict

dtd = defaultdict(list)
for date, time in (item.split() for item in dtl):
    dtd[date].append(time[:2])

Теперь вы можете легко сосчитать существующие элементы и использовать их для инициализации defaultdict, который будет возвращать нули за отсутствующие времена:

for key in dtd:
    dtd[key] = defaultdict(int, Counter(dtd[key]))

[1113 ] Результат:

defaultdict(list, {
    '03/01/19': defaultdict(int, {
        '09': 3,
        '10': 2,
        '11': 1,
        '12': 5,
        '17': 1,
        '21': 1
    }),
    '05/01/19': defaultdict(int, {'14': 1, '17': 2, '21': 1}),
    '06/01/19': defaultdict(int, {'11': 1, '12': 2})
})

Поскольку объекты здесь defaultdict, вы сможете запрашивать даты и время, которых не было в исходном наборе данных. Вы можете избежать этого, преобразовав результат в обычный dict, содержащий только те ключи, которые вы хотите после завершения:

hours = ['%02d' % h for h in range(24)]
dtd = {date: {h: d[h] for h in hours} for date, d in dtd}

35
задан 5 revs, 4 users 62% 18 October 2012 в 11:54
поделиться

7 ответов

Предотвратите фиксации с пустыми комментариями

  1. , предварительная фиксация
  2. предотвращает фиксации с пустым Источником комментария

:

"c:\Program Files\Subversion\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
exit 0
11
ответ дан 2 revs, 2 users 92% 27 November 2019 в 15:39
поделиться

Предотвращает редактирования к опорам пересмотра кроме svn:: журнал

  1. pre-revprop-change.bat
  2. Предотвращает редактирования к свойствам пересмотра кроме svn:: журнал

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1
8
ответ дан 4 revs, 3 users 65% 27 November 2019 в 15:39
поделиться

Для разработчиков.NET, использующих Подрывную деятельность в Windows, Phil Haack отправил приблизительно CaptainHook.

CaptainHook является простой сменной платформой для записи рычагов Подрывной деятельности с помощью.NET

, проект размещается в Source Forge

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

Я запустил репозиторий рычагов с помощью C#. Мой первый рычаг был для отправки регистрации уведомлений каналу RSS: SubversionRss, я в настоящее время работаю над одной постфиксацией, сцепляется для отправки регистрации уведомлений каналу Twitter.

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

Запретить редактирование свойств ревизии, кроме svn :: log

  1. pre-revprop-change.bat
  2. Запрещает редактирование свойств ревизии, отличных от svn :: log (альтернативная версия)

Источник:

rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
3
ответ дан 27 November 2019 в 15:39
поделиться

Проверяет общие сообщения "ленивого" коммита

  1. Имя ловушки = предварительная фиксация
  2. Что делает сценарий = Проверяет наличие пустой строки или символа '.' линия. Также проверьте файл слов, которые не могут быть единственным комментарием.

Фактический сценарий

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo Your commit has been blocked because you didn't provide a log message  1>&2
echo Please write a log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2 
exit 1

:OK
rem Check if comment is in list of reserved words to not be used..

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment
setlocal enabledelayedexpansion
Set SEPARATOR=
set COMMENT=
for /f "delims=" %%a in (comment) do (  
    set currentline=%%a
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!
)

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null
If %ERRORLEVEL% EQU 1 goto OK2

:Fail
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2
echo Line is -%COMMENT%- 1>&2
echo Please write a proper log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2 
exit 1


:OK2
rem Check that the author of this commit has the rights to perform
rem the commit on the files and directories being modified.
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

rem All checks passed, so allow the commit.
exit 0

Пример файла исключенных слов: Обновлено обновлено обновлено. Обновлено. Исправить исправить Исправить. исправить. .. . ... . . . . отсортированный отсортировано. Отсортировано Сортировано.

и т. Д. И т. Д. И т. Д.

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

* ОБНОВЛЕНИЕ: это больше не работает, поскольку Twitter отказался от аутентификации по имени пользователя и паролю в пользу OAuth. *

Публикует информацию о фиксации в Twitter

  1. Имя перехвата = post-commit
  2. Что делает сценарий = публикует сообщение о версии, авторе и фиксации в Twitter

Примечания по использованию:

  • Заменить twitterUsername и twitterPassword с вашим настоящим Twitter
  • Это проверено на VisualSVN, и единственный способ заставить его работать - это выгрузить все по жестко запрограммированному пути c: \ hook \ post-commit . Вы можете изменить это на любой путь, к которому VisualSVN имеет доступ для чтения / записи.
  • Требуется установка Wget. Установщик можно скачать здесь
  • Комментарии и улучшения приветствуются. Это мой первый перехватчик SVN в Windows, и мой GAWD доставил мне немало хлопот.

Фактический сценарий

echo status= > c:\hook\post-commit\msg.txt
echo Rev#%2 by >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %2 %1 >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" log -r %2 %1 >> c:\hook\post-commit\msg.txt
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" --user=twitterUsername --password=twitterPassword --post-file=c:\hook\post-commit\msg.txt --append-output=c:\hook\post-commit\log.txt --output-document=c:\hook\post-commit\download.txt --delete-after http://twitter.com/statuses/update.xml
6
ответ дан 27 November 2019 в 15:39
поделиться
Другие вопросы по тегам:

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