From 5bd5313076ab6e6f47c69ac934e2902297d9dd8d Mon Sep 17 00:00:00 2001 From: deyvidtotvs Date: Fri, 27 Dec 2024 01:21:12 -0300 Subject: [PATCH 1/2] estudo_versao_main --- .../atualizar-versao-cada-layout.yml | 81 ++++ .../workflows/criar-artefato-nome-branch.yml | 27 ++ .github/workflows/criar-tag-release.yml | 108 ++++++ .../workflows/validar-todos-arquivos-json.yml | 28 ++ .github/workflows/validate-json.yml | 53 --- pdvsync/versao.json | 4 + scripts/atualizar-versao-cada-layout.py | 352 ++++++++++++++++++ version.txt | 1 + 8 files changed, 601 insertions(+), 53 deletions(-) create mode 100644 .github/workflows/atualizar-versao-cada-layout.yml create mode 100644 .github/workflows/criar-artefato-nome-branch.yml create mode 100644 .github/workflows/criar-tag-release.yml create mode 100644 .github/workflows/validar-todos-arquivos-json.yml delete mode 100644 .github/workflows/validate-json.yml create mode 100644 pdvsync/versao.json create mode 100644 scripts/atualizar-versao-cada-layout.py create mode 100644 version.txt diff --git a/.github/workflows/atualizar-versao-cada-layout.yml b/.github/workflows/atualizar-versao-cada-layout.yml new file mode 100644 index 0000000..a53f58c --- /dev/null +++ b/.github/workflows/atualizar-versao-cada-layout.yml @@ -0,0 +1,81 @@ +name: Atualizar Versão de Cada Layout +on: + workflow_run: + workflows: ["Criar Tag e Release"] # Espera a execução do workflow "Criar Tag e Release" + types: [completed] # Executa quando o workflow "Criar Tag e Release" for completado (independentemente de sucesso ou falha) + +permissions: + contents: read # Permite ao GITHUB_TOKEN fazer push para o repositório + +jobs: + executa-script-py: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v3 + + - name: Set up Python environment + uses: actions/setup-python@v3 + with: + python-version: '3.x' # Especifica a versão do Python que você deseja + + - name: Install gitpython + run: | + pip install gitpython + + - name: Configurar o token do GitHub CLI + run: | + echo "GITHUB_TOKEN=${{ secrets.GH_TOKEN }}" >> $GITHUB_ENV + + - name: Listar todas as execuções de workflows + run: | + gh run list --repo deyvidksc/winthor-smart-hub-layouts # Lista todas as execuções de workflow no repositório + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Usando o token correto para autenticação + + - name: Listar todas as execuções de workflows e extrair o nome da branch + run: | + # Lista todas as execuções de workflow no repositório, filtrando pelo nome do workflow e pelo status de sucesso + # workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch' | sort -u | head -n 1) + # workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch | unique | sort | last') + workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch' | sort | tail -n 1) + + # Exibe o resultado da lista para debug + echo "Execuções de workflow 'Criar Artefato com Nome da Branch' bem-sucedidas encontradas: $workflow_runs" + + # Verifica se a variável workflow_runs contém algum valor + if [ -z "$workflow_runs" ]; then + echo "Nenhuma execução bem-sucedida do workflow 'Criar Artefato com Nome da Branch' foi encontrada." + exit 1 + fi + + # Agora, BRANCH_ORIGEM será o valor de workflow_runs (que é o nome da branch) + BRANCH_ORIGEM=$workflow_runs + + # Exibe o nome da branch extraído + echo "Nome da branch extraído: $BRANCH_ORIGEM" + + # Exporta BRANCH_ORIGEM como variável de ambiente para ser usado nas próximas etapas + echo "BRANCH_ORIGEM=$BRANCH_ORIGEM" >> $GITHUB_ENV + + # Determinando a branch base + if [ -n "${{ github.event.pull_request }}" ]; then + # Se for um PR, usamos o base ref (branch de destino do PR) + BRANCH_DESTINO="${{ github.base_ref }}" + else + # Se não for PR, define a branch destino para uma valor fixo ou usa a branch de onde o workflow foi executado + BRANCH_DESTINO=${GITHUB_REF##*/} + fi + + echo "BRANCH_DESTINO=$BRANCH_DESTINO" >> $GITHUB_ENV + + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Usando o token correto para autenticação + + - name: Run script atualizar-versao-cada-layout + run: | + echo "Passando parâmetros para o script Python:" + echo "Token: ${{ secrets.GH_TOKEN }}" + echo "Branch de Origem: $BRANCH_ORIGEM" + echo "Branch de Destino: $BRANCH_DESTINO" + python scripts/atualizar-versao-cada-layout.py ${{ secrets.GH_TOKEN }} $BRANCH_ORIGEM $BRANCH_DESTINO diff --git a/.github/workflows/criar-artefato-nome-branch.yml b/.github/workflows/criar-artefato-nome-branch.yml new file mode 100644 index 0000000..7201099 --- /dev/null +++ b/.github/workflows/criar-artefato-nome-branch.yml @@ -0,0 +1,27 @@ +name: Criar Artefato com Nome da Branch +on: + pull_request: + types: + - closed + branches: + - main + - develop # ou qualquer outra branch de interesse + +jobs: + cria-artefato: + runs-on: ubuntu-latest + steps: + - name: Checkout do código + uses: actions/checkout@v3 + + - name: Criar diretório temporário + run: mkdir -p temp/ # Cria o diretório temp se não existir + + - name: Criar arquivo com o nome da branch + run: echo "${{ github.event.pull_request.head.ref }}" > "temp/branch-name.txt" # Grava o nome da branch no arquivo dentro do diretório temp + + - name: Fazer upload do artefato + uses: actions/upload-artifact@v4 + with: + name: branch-name-artifact # Nome do artefato + path: "temp/branch-name.txt" # Caminho do arquivo a ser enviado como artefato diff --git a/.github/workflows/criar-tag-release.yml b/.github/workflows/criar-tag-release.yml new file mode 100644 index 0000000..299d989 --- /dev/null +++ b/.github/workflows/criar-tag-release.yml @@ -0,0 +1,108 @@ +name: Criar Tag e Release +on: + workflow_run: + workflows: ["Criar Artefato com Nome da Branch"] # Espera a execução do workflow "Criar Tag e Release" + types: [completed] # Executa quando o workflow "Criar Tag e Release" for completado (independentemente de sucesso ou falha) + + #pull_request: + #types: + #- closed + #branches: + #- main + #- develop + +permissions: + contents: write # Permite ao GITHUB_TOKEN fazer push para o repositório + +jobs: + cria-tag-release-on-push: + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Use o token correto aqui + steps: + - name: Checkout do código + uses: actions/checkout@v3 + + - name: Ler versão atual + id: read_version + run: | + VERSION_FILE="version.txt" + if [[ -f "$VERSION_FILE" ]]; then + VERSION=$(cat $VERSION_FILE) + else + VERSION="1.0.0.0" # Caso o arquivo de versão não exista, começar com a versão inicial + fi + echo "VERSAO_ATUAL=$VERSION" >> $GITHUB_ENV + + - name: Incrementar versão + id: increment_version + run: | + VERSION=${{ env.VERSAO_ATUAL }} + BRANCH_NAME=${GITHUB_REF#refs/heads/} + + # Extrair os 4 componentes da versão + IFS='.' read -r -a version_parts <<< "$VERSION" + + # Se a versão tem 4 componentes (major.minor.patch.build), processa + if [ ${#version_parts[@]} -eq 4 ]; then + major=${version_parts[0]} + minor=${version_parts[1]} + patch=${version_parts[2]} + build=${version_parts[3]} + else + echo "A versão não está no formato esperado (major.minor.patch.build)." + exit 1 + fi + + # Incrementa com base na branch + if [[ "$BRANCH_NAME" == "main" ]]; then + # Para main, incrementa o build + build=$((build + 1)) + elif [[ "$BRANCH_NAME" == "develop" ]]; then + # Para develop, incrementa o patch e o build é resetado para 1 + patch=$((patch + 1)) + build=1 + else + echo "Branch não reconhecida para incremento de versão." + exit 1 + fi + + # Cria a nova versão + NEW_VERSION="${major}.${minor}.${patch}.${build}" + echo "Nova versão: $NEW_VERSION" + echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV + + - name: Atualizar o arquivo de versão + run: | + echo ${{ env.NEW_VERSION }} > version.txt + git config --global user.name "GitHub Actions" + git config --global user.email "actions@github.com" + git add version.txt + git commit -m "Atualizando versão para ${{ env.NEW_VERSION }}" + git push origin ${{ github.ref }} + + - name: Criar Tag com a versão + run: | + # Criar uma tag usando a versão gerada + git tag "v${{ env.NEW_VERSION }}" + git push origin "v${{ env.NEW_VERSION }}" --force + + - name: Gerar Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + use_github_release_notes: true + tag_name: ${{ env.NEW_VERSION }} + release_name: Release ${{ env.NEW_VERSION }} + draft: false + prerelease: false + + + # - name: Gerar Release + # uses: rymndhng/release-on-push-action@master + # with: + # use_github_release_notes: true + # tag_prefix: "" + # release_name: ${{ env.NEW_VERSION }} diff --git a/.github/workflows/validar-todos-arquivos-json.yml b/.github/workflows/validar-todos-arquivos-json.yml new file mode 100644 index 0000000..52eb723 --- /dev/null +++ b/.github/workflows/validar-todos-arquivos-json.yml @@ -0,0 +1,28 @@ +name: Validar todos Arquivos JSON + +on: + pull_request: + types: [opened, synchronize, reopened] # Este evento dispara quando o PR é aberto, sincronizado ou reaberto +jobs: + validate-json: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '14' + + - name: Install jq + run: sudo apt-get install jq + + - name: Validate JSON files + run: | + # Encontra todos os arquivos JSON e os valida + find . -type f -name '*.json' -print0 | while IFS= read -r -d '' file; do + echo "Validating $file" + jq empty "$file" || { echo "Invalid JSON: $file"; exit 1; } + done diff --git a/.github/workflows/validate-json.yml b/.github/workflows/validate-json.yml deleted file mode 100644 index 079ea60..0000000 --- a/.github/workflows/validate-json.yml +++ /dev/null @@ -1,53 +0,0 @@ -#name: Validate JSON - -#on: -# push: -# branches: -# - main # Ou a branch que deseja monitorar - -#jobs: -# validate-json: -# runs-on: ubuntu-latest - -# steps: -# - name: Checkout code -# uses: actions/checkout@v2 - -# - name: Validate JSON -# run: | -# if jq -e .field_to_check $GITHUB_WORKSPACE/path/to/your/json.json > /dev/null; then -# echo "Field 'field_to_check' exists." -# else -# echo "Field 'field_to_check' does not exist." -# exit 1 -# fi -# - - -name: Validate JSON - -on: [push, pull_request] - -jobs: - validate-json: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: '14' - - - name: Install jq - run: sudo apt-get install jq - - - name: Validate JSON files - run: | - # Encontra todos os arquivos JSON e os valida - find . -type f -name '*.json' -print0 | while IFS= read -r -d '' file; do - echo "Validating $file" - jq empty "$file" || { echo "Invalid JSON: $file"; exit 1; } - done \ No newline at end of file diff --git a/pdvsync/versao.json b/pdvsync/versao.json new file mode 100644 index 0000000..bdb7ae1 --- /dev/null +++ b/pdvsync/versao.json @@ -0,0 +1,4 @@ +{ + "projeto": "pdvsync", + "versao": "1.35.0.165" +} \ No newline at end of file diff --git a/scripts/atualizar-versao-cada-layout.py b/scripts/atualizar-versao-cada-layout.py new file mode 100644 index 0000000..263061a --- /dev/null +++ b/scripts/atualizar-versao-cada-layout.py @@ -0,0 +1,352 @@ +import os +import json +import git +import sys +import subprocess +from git import Repo + +# Função para clonar o repositório +def clone_repo(repo_url, token, local_dir): + repo_url_with_token = repo_url.replace("https://", f"https://{token}:x-oauth-basic@") + repo = Repo.clone_from(repo_url_with_token, local_dir) + return repo + + +# Função para verificar se há diferenças entre dois branches +def has_diff_between_branches(repo, origin_branch, base_branch,): + # Acessando os branches remotos explicitamente + branch1 = f'refs/remotes/origin/{origin_branch}' # Se for um branch remoto + branch2 = f'refs/remotes/origin/{base_branch}' # Se for um branch remoto + + # Obtendo os commits de cada branch + commits1 = list(repo.iter_commits(branch1)) + commits2 = list(repo.iter_commits(branch2)) + + # Criando sets para facilitar a comparação + commits1_set = set(commit.hexsha for commit in commits1) + commits2_set = set(commit.hexsha for commit in commits2) + + # Encontrando commits exclusivos para cada branch + unique_commits1 = commits1_set - commits2_set + unique_commits2 = commits2_set - commits1_set + + # Se houver commits exclusivos, significa que há diferenças + if unique_commits1 or unique_commits2: + return True + + # Caso não tenha commits exclusivos, comparando as diferenças nos arquivos dos commits + for commit1 in commits1: + for commit2 in commits2: + # Obtendo as diferenças entre os commits + diffs = commit1.diff(commit2) + if diffs: + return True # Se houver qualquer diferença, retorna True + + return False # Caso não haja diferenças entre os commits + + +def get_commit_from_branch(repo, branch_name): + """ + Obtém o commit de um branch remoto específico. + """ + try: + # Obtemos o commit mais recente do branch remoto + commit = repo.commit(f'refs/remotes/origin/{branch_name}') + print(f"Commit do branch {branch_name} obtido com sucesso: {commit.hexsha}") + except Exception as e: + print(f"Erro ao acessar o commit do branch {branch_name}: {e}") + raise + return commit + +def get_modified_files(repo, old_commit, new_commit): + """ + Obtém os arquivos modificados entre dois commits. + """ + try: + # Usando git diff para obter apenas os arquivos modificados entre dois commits + diff = repo.git.diff('--name-only', old_commit.hexsha, new_commit.hexsha) + if diff: + print(f"Differences entre {old_commit.hexsha} e {new_commit.hexsha}:") + print(diff) # Exibe as diferenças encontradas + else: + print(f"Sem diferenças encontradas entre {old_commit.hexsha} e {new_commit.hexsha}.") + modified_files = diff.splitlines() # Divide a saída em uma lista de arquivos + return modified_files + except Exception as e: + print(f"Erro ao executar git diff: {e}") + return [] + + +def get_modified_folders(modified_files): + """ + Extrai as pastas das listas de arquivos modificados. + """ + modified_folders = set() + for file in modified_files: + folder = file.split('/')[0] # Considera a pasta como a parte antes da primeira barra "/" + modified_folders.add(folder) + return modified_folders + + +def compare_commits_and_folders(repo, origin_branch, base_branch): + """ + Compara dois branches e retorna as pastas alteradas entre os commits dos branches. + + Parameters: + - repo: O repositório GitPython. + - origin_branch: O branch de origem. + - base_branch: O branch de destino. + + Retorna: + - As pastas alteradas entre os dois branches. + """ + # Obtendo os commits dos branches + commit_origin = get_commit_from_branch(repo, origin_branch) + commit_base = get_commit_from_branch(repo, base_branch) + + # Obtendo os arquivos modificados entre os commits + modified_files = get_modified_files(repo, commit_origin, commit_base) + + # Extraindo as pastas modificadas + modified_folders = get_modified_folders(modified_files) + + return modified_folders + +def has_changes_in_directory(repo, origin_branch, base_branch, directory): + """ + Verifica se há alterações no diretório especificado entre dois branches. + + Parameters: + - repo: O repositório GitPython. + - origin_branch: O branch de origem. + - base_branch: O branch de destino. + - directory: O diretório a ser comparado. + + Retorna: + - True se houver alterações no diretório, False caso contrário. + """ + # Obtendo os commits dos branches + commit_trunk = get_commit_from_branch(repo, origin_branch) + commit_current = get_commit_from_branch(repo, base_branch) + + # Preparando as árvores dos commits + old_tree = prepare_tree_parser(commit_trunk) + new_tree = prepare_tree_parser(commit_current) + + # Comparando os diffs entre os dois commits no diretório especificado + diffs = repo.git.diff(old_tree, new_tree, '--', directory) + + # Se houver qualquer diferença, retorna True + return bool(diffs.strip()) # Se a string de diffs não estiver vazia, significa que há diferenças + + +# Função para ler a versão de version.txt +def get_version_from_file(): + version_file_path = 'version.txt' + if not os.path.exists(version_file_path): + print(f"Arquivo {version_file_path} não encontrado.") + return None + + with open(version_file_path, 'r') as file: + return file.read().strip() + +# Função para atualizar o arquivo versao.json com a versão de version.txt +def update_version_json(directory): + version_file_path = os.path.join(directory, 'versao.json') + + if not os.path.exists(version_file_path): + print(f"Arquivo versao.json não encontrado em {directory}.") + return + + with open(version_file_path, 'r') as f: + data = json.load(f) + + # Obtendo a versão do arquivo version.txt + versao = get_version_from_file() + if not versao: + print("Versão não encontrada no arquivo version.txt.") + return + + print(f"Versão do arquivo version.txt: {versao}.") + # Definindo a versão obtida de version.txt no arquivo JSON + data['versao'] = versao + + # Atualizar o arquivo JSON + with open(version_file_path, 'w') as f: + json.dump(data, f, indent=4) + + print(f"Versão atualizada para {versao} no arquivo versao.json em {directory}") +# Função para atualizar o arquivo versao.json +# def update_version_json(directory): +# version_file_path = os.path.join(directory, 'versao.json') + +# if not os.path.exists(version_file_path): +# print(f"Arquivo versao.json não encontrado em {directory}.") +# return + +# with open(version_file_path, 'r') as f: +# data = json.load(f) + +# # Incrementar a versão +# current_version = data.get('versao', '1.0.0.0') +# new_version = increment_version(current_version) +# data['versao'] = new_version + +# # Atualizar o JSON +# with open(version_file_path, 'w') as f: +# json.dump(data, f, indent=4) + +# print(f"Versão atualizada para {new_version} no arquivo versao.json em {directory}") + +# # Função para incrementar a versão +# def increment_version(version): +# version_parts = version.split('.') +# build = int(version_parts[3]) +# build += 1 +# version_parts[3] = str(build) +# return '.'.join(version_parts) + +# Função para fazer commit e push das alterações +def commit_and_push(repo, branch, token): + # Adiciona todas as mudanças ao índice + repo.git.add(update=True) + # Realiza o commit + repo.index.commit("Atualizando a versão no arquivo versao.json") + # URL do repositório com autenticação via token + remote_url = f'https://{token}@github.com/deyvidksc/winthor-smart-hub-layouts.git' + # Acessa o remote + origin = repo.remotes.origin + # Configura a URL com o token de autenticação + origin.set_url(remote_url) + # Realiza o push para o branch remoto + origin.push(refspec=f"{branch}:{branch}") + + + + +def comparar_diferencas(repo, branch_base, branch_origem): + # Listar branches locais + print("Branches locais:") + for branch in repo.branches: + print(f"- {branch.name}") + + # Listar branches remotos + print("\nBranches remotos:") + for remote in repo.remotes: + for ref in remote.refs: + print(f"- {ref.name}") + + # Atualizar os branches remotos + print(f"Atualizando o repositório...") + repo.git.fetch() + + # Garantir que o branch base esteja correto + print(f"Fazendo checkout no branch {branch_base}...") + repo.git.checkout(branch_base) + repo.git.pull() + + # Garantir que o branch de origem remoto esteja correto (checkout direto no branch remoto) + print(f"Fazendo checkout no branch remoto {branch_origem}...") + try: + # Criar um novo branch local que acompanha o branch remoto + repo.git.checkout('-b', branch_origem, f'origin/{branch_origem}') + repo.git.pull() + except git.exc.GitCommandError as e: + print(f"Erro ao fazer checkout no branch remoto {branch_origem}: {e}") + sys.exit(1) + + # Verificar o estado atual do repositório + print(f"Estado atual do repositório:") + + # Verificando o estado da HEAD + if repo.head.is_detached: + print(f"Você está em um estado de detached HEAD em {repo.head.commit.hexsha}") + else: + print(f"Branch ativo: {repo.active_branch}") + + print(f"Branch base: {branch_base}") + print(f"Branch de origem: {branch_origem}") + + # Comparando as diferenças entre o branch base (local) e o branch de origem (remoto) + print(f"Comparando {branch_base} com {branch_origem}...") + diff = repo.git.diff(f"{branch_base}..origin/{branch_origem}", '--name-only') + + # Caso haja diferenças + if diff: + print(f'Diferenças encontradas entre {branch_base} e {branch_origem}:') + dirs = set() + for line in diff.splitlines(): + # Verifica se o item é uma pasta (diretório) + if line.endswith('/'): # Verifica se o caminho termina com '/' + dirs.add(line) + else: + # Adiciona o diretório pai se for um arquivo dentro de um diretório + dir_name = os.path.dirname(line) + if dir_name: + dirs.add(dir_name + '/') + + # Se houver diretórios com diferenças + if dirs: + print("Pastas com diferenças:") + for dir in dirs: + print(f"- {dir}") + return dirs # Retorna as pastas com diferenças + else: + print("Nenhuma pasta com diferenças encontrada.") + return [] # Nenhuma pasta com diferença + else: + print(f'Não há diferenças entre {branch_base} e {branch_origem}.') + return [] # Nenhuma diferença detectada + + + + +# Função principal +def main(): + if len(sys.argv) < 4: + print("Erro: é necessário passar o token, o branch origem e o branch destino.") + sys.exit(1) + + # Parâmetros + token = sys.argv[1] + origin_branch = sys.argv[2] + base_branch = sys.argv[3] + repo_url = "https://github.com/deyvidksc/winthor-smart-hub-layouts.git" + local_folder = "/tmp/git_repo" # Defina o diretório local onde o repositório será clonado + + + # Clonar o repositório + repo = clone_repo(repo_url, token, local_folder) + + + #checkout_branch(repo, origin_branch, local_folder) + modified_folders = comparar_diferencas(repo, base_branch, origin_branch) + # Verificar diferenças entre os branches + #if has_diff_between_branches(repo, origin_branch, base_branch): + if modified_folders: + print(f"O branch '{origin_branch}' tem diferenças em relação ao '{base_branch}'.") + + try: + # Iterar pelas pastas e atualizar o versao.json + #for dirpath, dirnames, filenames in os.walk(local_folder): + # Verificando se o diretório contém um arquivo versao.json + #if 'versao.json' in filenames: + # print(f"Verificando alterações na pasta: {dirpath}") + # Verificando se houve alterações no diretório entre os dois branches remotos + #if has_changes_in_directory(repo, origin_branch, base_branch, dirpath): + for dirpath in modified_folders: + print(f"Alterações detectadas em: {dirpath}") + # Se houver alterações, atualizar o versao.json + update_version_json(dirpath) + except Exception as e: + print(f"Erro: {e}") + sys.exit(1) + + + # Fazer commit e push das alterações + commit_and_push(repo, base_branch, token) + else: + print(f"Não há diferenças entre os branches '{origin_branch}' e '{base_branch}'.") + +if __name__ == "__main__": + main() diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..0f36012 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +1.36.0.1 \ No newline at end of file From 3c202c2ca2ca7491615c1fa258fcb1a3fc91b084 Mon Sep 17 00:00:00 2001 From: deyvidtotvs Date: Fri, 27 Dec 2024 01:22:06 -0300 Subject: [PATCH 2/2] estudo_versao_main --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 0f36012..ac4eb49 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.36.0.1 \ No newline at end of file +1.35.0.11 \ No newline at end of file