AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 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

如何设置污迹和清理过滤器,以便它引用存储库跟踪的脚本

  • 772

我有一个使用 Jupyter Notebook 文件进行数据分析的项目,我使用 clean/smudge 过滤器将输出和某些元数据保留在 git 之外。有时我会对过滤器进行调整,我希望自动应用这些更改,而不必git config每次都要求我的协作者运行命令。

如何配置过滤器来运行存储库跟踪的脚本?

出于此问题的目的,我们假设 clean 命令是如何在使用 git commit 时清除 Jupyter Notebook 的输出和元数据?:

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

这通常配置为...

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

...并与.gitattributes包含以下内容的 a 一起使用。

*.ipynb filter=<filter-name>

相关问题

  • .gitattributes 污迹和清理过滤器作为存储库的一部分很接近,但与设置过滤器相关git clone,而不是使用存储库跟踪过滤器中的更改
  • 如何跟踪存储库/项目中特定于系统的配置文件?是一个关于跟踪存储库中的任何配置文件的更普遍的问题,而不是解决这个问题的细节。
  • 允许使用 git clone 配置污迹和干净过滤器的安全风险是什么?是关于在 上设置过滤器,而不是在使用存储库中的脚本进行克隆后git clone设置过滤器。
git
  • 2 2 个回答
  • 34 Views

2 个回答

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

    要在 Git 中设置引用存储库跟踪的脚本的污迹或清理过滤器,您需要使用项目根目录中存储库中脚本的相对路径(实际上,相对于.gitattributes声明过滤器的 )

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

    对于 Jupyter Notebook 文件的特定场景,您可以通过将 clean 脚本放置在存储库中来设置 clean 过滤器,例如scripts/clean_jupyter.sh. 该脚本(应该是可执行的:)chmod +x scripts/clean_jupyter.sh将包含您提到的命令:

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

    配置您的.gitattributes文件以将此脚本用于 Jupyter Notebook 文件:

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

    设置 clean 过滤器.git/config以引用您的脚本:

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

    要将这些更改自动应用于所有协作者,您可以在项目的 中包含说明README.md,或设置一个初始化脚本,他们可以运行一次以配置其本地存储库设置。出于安全原因,Git 不允许自动应用存储库中的过滤器配置,因此需要手动设置。


    要回答您关于我的旧答案“如何跟踪存储库/项目中特定于系统的配置文件? ”的问题:

    你说“这样,污迹引用的脚本(用 Git 管理)”。到底如何在污迹过滤器中引用由 git 管理的脚本?我对脚本和 git 过滤器比较陌生,但我真的很想让它在我的项目中发挥作用。

    or过滤器是一个脚本,它是smudge :clean

    • 相对于您的 .gitattributes 文件(声明过滤器的位置),如本示例所示git/git/t/chainlint/token-pasting.test
    • %PATH%或者 shell 会话中的脚本$PATH,在这种情况下,您可以仅通过其名称(无路径)引用它。
    • 1
  2. Dr. Yuvraj Kumar
    2023-12-31T02:06:41+08:002023-12-31T02:06:41+08:00

    如果您想要配置 Git 过滤器来运行存储库跟踪的脚本,您可以使用相对路径来引用过滤器配置中的脚本。以下是如何修改 .git/config 文件中的过滤器配置来实现此目的:

    假设您有这样的目录结构:

    project_root/
    |-- scripts/
    |   |-- clean_script.py
    |   |-- smudge_script.py
    |-- .git/
    |-- .gitattributes
    |-- other_files/
    
    1. 更新.gitattributes:

    您的 .gitattributes 文件应使用存储库根目录的相对路径引用脚本:

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

    使用脚本的相对路径更新 .git/config 文件中的过滤器配置:

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

    确保根据您的实际项目结构以及清理和涂抹 Jupyter Notebook 文件所需的命令来调整路径和命令。

    1. 提交并分享:

    将更新的 .gitattributes 和 .git/config 文件提交到您的存储库:

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

    这样,当协作者克隆存储库时,过滤器配置将使用相对路径引用脚本,并且脚本将根据其在项目结构中的位置执行。根据您的具体项目设置相应地调整路径。

    • -1

相关问题

  • 我不小心点击了一个按钮,删除了为网站所做的所有提交,但我的计算机上有备份 - 如何恢复?[关闭]

  • 在协作工作流程中修改作者并利用 Git Rebase

  • 如何轻松打印默认的 Git 作者信息?

  • 将我的更改从 gitlab 拉到远程服务器的正确方法是什么?

  • 我可以将拉取请求变基并合并到阻止推送和未签名提交的分支吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve