Git 如何使用私有分叉或存储库将我的dotfiles公开?

Git 如何使用私有分叉或存储库将我的dotfiles公开?,git,terminal,dotfiles,Git,Terminal,Dotfiles,我想公开我的dot文件。我找到了{Yadm](),看起来正是我想要的 我根本不想在版本控制中使用机密数据。我会将其脱机存储在USB记忆棒上的某个位置(ssh密钥、gpg密钥等)。但是,还有其他文件包含我想在公开之前过滤或更改的信息 Yadm还允许我在同一个存储库中拥有,因此我在思考,而不是 拥有专用存储库的原因是,某些文件(如irc.conf)具有我要替换或清理的字符串。我可能希望包含此文件,但删除包含机密\u irc\u网络的所有行 ~/.weechat/irc.conf:SECRET_IRC

我想公开我的dot文件。我找到了{Yadm](),看起来正是我想要的

我根本不想在版本控制中使用机密数据。我会将其脱机存储在USB记忆棒上的某个位置(ssh密钥、gpg密钥等)。但是,还有其他文件包含我想在公开之前过滤或更改的信息

Yadm还允许我在同一个存储库中拥有,因此我在思考,而不是

拥有专用存储库的原因是,某些文件(如
irc.conf
)具有我要替换或清理的字符串。我可能希望包含此文件,但删除包含
机密\u irc\u网络的所有行

~/.weechat/irc.conf:SECRET_IRC_NETWORK.addresses = "irc.secret.example.com"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl = on
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl_cert = "~/.weechat/ssl/SECRET_IRC/SECRET_IRC-SECRET_NAME.pem"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl_priorities = "NORMAL:-VERS-SSL3.0"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl_dhkey_size
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl_fingerprint = "SECRET_FINGERPRINT"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.ssl_verify = on
~/.weechat/irc.conf:SECRET_IRC_NETWORK.sasl_username = "SECRET_USERNAME"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.nicks = "SECRET_NAME"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.username = "SECRET_USERNAME"
~/.weechat/irc.conf:SECRET_IRC_NETWORK.realname = "SECRET_NAME"
另一个示例可能是我的iptables规则配置
rules6 save

~/etc/iptables/rules6-save:-A INPUT -s `2001:MY:SECRET:ASSIGNED:RANGE::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
在它公开之前,我想将
2001:MY:SECRET:ASSIGNED:RANGE
替换为
2001:db8:AAA:AAA:AAA::/64
。我是如何做到这一点的

  • 我需要提交到公共存储库(红色)还是私有分支(绿色)
  • 我想它是这样工作的:

    • 参加私人回购
    • 过滤并推送至公共回购(非常小心地检查所有内容是否正确消毒)

    • Cherry从公众中挑选一些承诺
    • 用私有数据进行过滤和合并

    • 根据我的研究,如果你在Github/Gitlab上有一个公共存储库,你就不能有一个私有的fork并从中发出任何pull请求。理想情况下,私有的fork应该在我自己的私有服务器上
    我怎样才能避免这个问题?我不想让人们知道私有分支的存在。因此,私有分支的任何提交都必须对作者进行消毒

    (上图为点文件)


    所以我最终解决了这个问题。本质上我使用了YADM的引导选项。我创建了一个引导模板

    我创建了一些并用jq阅读了它们。这允许我跳过初始化的某些部分

    {
      "submodule_init_vim": false,
      "run_package_manager": true
    }
    
    我对许多配置文件进行了模板化,并将模板数据放入其中

    如果您查看我的,您可以看到我是如何在路径中阅读的:

    export PATH="{% for v in PATHS | from_json %}{{v.path |join(':')}}{% endfor %}"
    
    它接收来自的数据

    这是一个简单的例子,但我对我的孩子也这么做了

    我从中读取模板数据的位置

    {
      "submodule_init_vim": false,
      "run_package_manager": true
    }
    
    export PATH="{% for v in PATHS | from_json %}{{v.path |join(':')}}{% endfor %}"
    
    [
        {"path": ["/usr/local/sbin",
                  "/usr/local/bin",
                  "/usr/sbin",
                  "/usr/bin",
                  "/sbin",
                  "/bin",
                  "/usr/libexec",
                  "$HOME/.local/bin"]
        }
    ]
    
    {% for v in SSH_HOSTS | from_json %}{%
        if v.Host != '' %}Host {{ v.Host }}{%
        endif %}{%
        if v.Comment != '' %}
        {{ v.Comment }}{% endif %}{%
        if v.Hostname != '' %}
        Hostname {{ v.Hostname }}{%
        endif %}{%
        if v.Port != '' %}
        Port {{ v.Port }}{% endif %}{%
        if v.User != '' %}
        User {{ v.User }}{% endif %}{%
        if v.HostKeyAlgorithms != '' %}
        HostKeyAlgorithms {{ v.HostKeyAlgorithms }}{%
        endif %}{%
        if v.KexAlgorithms != '' %}
        KexAlgorithms {{ v.KexAlgorithms }}{% endif %}{%
        if v.Ciphers != '' %}
        Ciphers {{ v.Ciphers }}{% endif %}{%
        if v.MACs != '' %}
        MACs {{ v.MACs }}{% endif %}{%
        if v.PasswordAuthentication != '' %}
        PasswordAuthentication {{ v.PasswordAuthentication }}{% endif %}{%
        if v.IdentifyFile != '' %}
        IdentityFile {{ v.IdentifyFile }}{% endif %}
    
    {% endfor %}
    
    [
        {
            "Host":"NSA",
            "Comment": "# Compute with world's dick pix",
            "Hostname":"203.0.113.1",
            "Port": "",
            "User": "nsa",
            "HostKeyAlgorithms":"",
            "KexAlgorithms": "",
            "Ciphers": "",
            "MACs":"",
            "PasswordAuthentication": "",
            "IdentifyFile":"~/.ssh/id_ed25519_nsa"
        },
        {
            "Host":"CIA",
            "Comment": "",
            "Hostname":"203.0.113.2",
            "Port": "",
            "User": "cia",
            "HostKeyAlgorithms":"",
            "KexAlgorithms": "",
            "Ciphers": "",
            "MACs":"",
            "PasswordAuthentication": "",
            "IdentifyFile":"~/.ssh/id_ed25519_cia"
        }
    ]