AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77736895
Accepted
Joshua Shew
Joshua Shew
Asked: 2023-12-31 01:54:30 +0800 CST2023-12-31 01:54:30 +0800 CST 2023-12-31 01:54:30 +0800 CST

Como configurar um filtro de manchas e limpeza para que faça referência a um script rastreado pelo repositório

  • 772

Eu tenho um projeto que usa arquivos do Jupyter Notebook para análise de dados e mantenho a saída e alguns metadados fora do git com um filtro limpo/manchado. Às vezes, farei ajustes no filtro e quero que essas alterações sejam aplicadas automaticamente, em vez de ter que pedir aos meus colaboradores para executarem um git configcomando a cada vez.

Como posso configurar o filtro para executar scripts rastreados pelo repositório?

Para o propósito desta questão, vamos supor que o comando clean seja aquele de Como limpar a saída e os metadados do Jupyter Notebook ao usar o git commit? :

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --ClearMetadataPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR

Isso normalmente é configurado como ...

git config filter.<filter-name>.clean "<command>"

...e usado com um .gitattributesque inclui o seguinte.

*.ipynb filter=<filter-name>

Perguntas relacionadas

  • .gitattributes borrar e limpar filtros como parte do repositório está próximo, mas relacionado à configuração de filtros git cloneem vez de rastrear alterações no filtro com o repositório
  • Como posso rastrear arquivos de configuração específicos do sistema em um repositório/projeto? é uma questão mais geral sobre o rastreamento de qualquer arquivo de configuração em um repositório, sem abordar as especificidades desta questão.
  • Quais são os riscos de segurança ao permitir a configuração de filtros de manchas e limpeza com git clone é sobre a configuração de um filtro em git clone, não sobre a configuração de um filtro após a clonagem que usa um script no repositório.
git
  • 2 2 respostas
  • 34 Views

2 respostas

  • Voted
  1. Best Answer
    VonC
    2023-12-31T02:19:38+08:002023-12-31T02:19:38+08:00

    Para configurar um filtro borrado ou limpo no Git que faça referência a um script rastreado pelo repositório, você precisa usar um caminho relativo para o script no repositório a partir do diretório raiz do projeto (na verdade, relativo ao seu , .gitattributesonde o filtro é declarado)

    +--------------------+
    | Git Repository     |
    |                    |
    | +----------------+ |
    | | .git           | |
    | +----------------+ |
    | +----------------+ |
    | | Scripts        | |
    | | +------------+ | |
    | | | clean.sh   | | | <--- The script for the clean filter
    | | +------------+ | |
    | +----------------+ |
    | +----------------+ |
    | | .gitattributes | | <--- Specifies the filter for .ipynb files
    | +----------------+ |
    +--------------------+
    

    Para o seu cenário específico com arquivos do Jupyter Notebook, você pode configurar o filtro limpo colocando o script limpo em seu repositório, por exemplo, scripts/clean_jupyter.sh. Esse script (que deve ser executável:) chmod +x scripts/clean_jupyter.shincluirá o comando que você mencionou:

    #!/bin/bash
    jupyter nbconvert --ClearOutputPreprocessor.enabled=True --ClearMetadataPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR
    

    Configure seu .gitattributesarquivo para usar este script para seus arquivos do Jupyter Notebook:

    echo "*.ipynb filter=jupyterClean" >> .gitattributes
    
    # result in your .gitattributes:
    *.ipynb filter=jupyterClean
    

    Configure o filtro limpo .git/configpara fazer referência ao seu script:

    git config filter.jupyterClean.clean "scripts/clean_jupyter.sh"
    

    Para que essas alterações sejam aplicadas automaticamente a todos os colaboradores, você pode incluir instruções no arquivo do seu projeto README.mdou configurar um script de inicialização que eles possam executar uma vez para definir as configurações do repositório local. O Git não permite a aplicação automática de configurações de filtro de um repositório por motivos de segurança, portanto a configuração manual é necessária.


    Para responder sua pergunta sobre minha resposta antiga sobre " Como posso rastrear arquivos de configuração específicos do sistema em um repositório/projeto? ":

    Você diz "Dessa forma, o script (gerenciado com Git) referenciado pela mancha". Como exatamente você faz referência a um script gerenciado pelo git no filtro de manchas? Sou relativamente novo em scripts e filtros git, mas realmente gostaria que isso funcionasse em meu projeto.

    O filtro smudge or cleané um script que é:

    • seja em relação ao seu arquivo .gitattributes (onde o filtro é declarado), como visto neste exemplo emgit/git/t/chainlint/token-pasting.test
    • ou um script no %PATH%ou $PATHda sua sessão shell; nesse caso, você pode referenciá-lo apenas pelo nome (sem caminho).
    • 1
  2. Dr. Yuvraj Kumar
    2023-12-31T02:06:41+08:002023-12-31T02:06:41+08:00

    Se quiser configurar filtros do Git para executar scripts rastreados pelo repositório, você poderá usar caminhos relativos para fazer referência aos scripts na configuração do filtro. Veja como você pode modificar a configuração do filtro no arquivo .git/config para conseguir isso:

    Supondo que você tenha uma estrutura de diretórios como esta:

    project_root/
    |-- scripts/
    |   |-- clean_script.py
    |   |-- smudge_script.py
    |-- .git/
    |-- .gitattributes
    |-- other_files/
    
    1. Atualize atributos .git:

    Seu arquivo .gitattributes deve referenciar os scripts com um caminho relativo da raiz do seu repositório:

    *.ipynb filter=jupyter-notebook
    
    1. Atualize .git/config:

    Atualize a configuração do filtro no arquivo .git/config com caminhos relativos aos seus scripts:

    [filter "jupyter-notebook"]
    
    clean = python scripts/clean_script.py
    
    smudge = python scripts/smudge_script.py
    

    Certifique-se de ajustar os caminhos e comandos com base na estrutura real do seu projeto e nos comandos necessários para limpar e manchar os arquivos do Jupyter Notebook.

    1. Comprometa-se e compartilhe:

    Envie os arquivos .gitattributes e .git/config atualizados para seu repositório:

    git add .gitattributes .git/config
    
    git commit -m "Update Git filter configuration for Jupyter Notebook scripts"
    
    git push
    

    Dessa forma, quando os colaboradores clonarem o repositório, a configuração do filtro fará referência aos scripts por meio de caminhos relativos, e os scripts serão executados com base em sua localização na estrutura do projeto. Ajuste os caminhos de acordo com a configuração específica do seu projeto.

    • -1

relate perguntas

  • Acidentalmente, cliquei em um botão que excluiu todos os commits feitos para um site, mas tenho um backup no meu computador - como restaurar? [fechado]

  • Modificando autores e utilizando Git Rebase em fluxos de trabalho colaborativos

  • Como imprimir facilmente as informações padrão do autor do Git?

  • Qual é a maneira certa de extrair minhas alterações do gitlab para o servidor remoto?

  • Posso rebasear e mesclar uma solicitação pull para uma ramificação que bloqueia push e commits não assinados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve