Как создать сценарий пакета, который автоматически создает приращение тега?

#python #windows #git #batch-file

#python #Windows #git #пакетный файл

Вопрос:

Я хотел бы автоматизировать настройку python-scaffold на основе git для Windows, и с этой целью я хотел бы создать пакет, который выполняет что-то вроде следующих строк (я выделю то, чего мне не хватает):

  @ clean untracked files, I know may be dangerous ...
 git clean -fd 
 git checkout master
 @ check whether the last commit is tagged i.e. nothing to do:
 git log -1 > % ??? get the last commit, load the tag name into a variable 
 @ and check whether it's tagged e.g. commit 2acaa06fb1b5aa8e804dc37ca2fc53d6c4369b6a (HEAD -> master, tag: v1.2.9, origin/master)
 @ we see that this one is tagged so we skip the next step
 @ at this point %LAST_TAG% should equal 1.2.9 
 if empty %LAST_TAG%:
    @ find the last tag from git log
    git log > % ??? get the last tag into %LAST_TAG%
    @ increment it, e.g. should be v1.2.10 how to do this in batch?
    NEXT_TAG = increment(%LAST_TAG%)
    git tag -a %NEXT_TAG% -m "Maintenance release, automated increment"
    @ push the next tag to origin
    git push origin --tags
    
    @create the released binary artifact
    git checkout -b %NEXT_TAG% %NEXT_TAG%
    python setup.py bdist_wheel
    @ find the lastest file in folder
    FOR /f %f IN ('dir /b /od dist*.whl') DO @SET NEWEST_WHL=%f
    pip install dist%NEWEST_WHL%

     
    
  

Комментарии:

1. Мне кажется, что вы пытаетесь определить, как заполнить переменную LAST_TAG с именем возвращаемым значением из команды. Для этого вы используете точно такой же метод, который вы уже используете для заполнения NEWEST_WHL . Откройте окно командной строки, введите for /? , нажмите [ENTER] клавишу и прочитайте информацию об использовании. Обратите особое внимание на использование Delims , EOF , Skip , Tokens , и UseBackQ вам может понадобиться один или несколько из них, чтобы выделить нужную вам конкретную строку из возвращаемых данных.

2. Является ли ваша стратегия, согласно которой все слияния в master должны увеличивать 2-е число и устанавливать 3-е число равным 0? Если да, то каков процесс, который увеличивает 3-е число?

3. @TTT Да, это незначительные приращения выпуска, поэтому будет достаточно бесконечно увеличивать только третье число, т.Е. 1 — до любых 11, 12, .., inf

4. Поскольку у вас есть python, создавайте сценарии на python (или sh, который поставляется с git). Сэкономьте себе и подписчикам нервные клетки.

5. @ddbug Хахаха: -D ты прав … Я бы хотел, но это Win env, и в момент, когда это выполняется, я не могу ничего предположить, например, установку или версию python и т. Д.. мои руки связаны.