Post-Local sync at 2025-06-09 14:43:29

This commit is contained in:
Mark Randall Havens 2025-06-09 14:43:29 -05:00
parent 7df48b6263
commit 336ba02e98
51 changed files with 2074 additions and 208 deletions

View file

@ -1 +1 @@
9544c8e02b8ce1b2201372e95ecc67de5a32369e cfeb759cddd54dc840ec30fb2c7887b3b013815b

View file

@ -3,28 +3,28 @@
- **Repo Name**: `git-sigil` - **Repo Name**: `git-sigil`
- **Bitbucket Workspace**: `thefoldwithin` - **Bitbucket Workspace**: `thefoldwithin`
- **Remote URL**: [https://bitbucket.org/thefoldwithin/git-sigil](https://bitbucket.org/thefoldwithin/git-sigil) - **Remote URL**: [https://bitbucket.org/thefoldwithin/git-sigil](https://bitbucket.org/thefoldwithin/git-sigil)
- **Local Repo Path**: `/home/mrhavens/tmpwork/git-sigil` - **Local Repo Path**: `/mnt/c/Downloads/git-sigil`
- **Remote Label**: `bitbucket` - **Remote Label**: `bitbucket`
- **Default Branch**: `master` - **Default Branch**: `master`
- **This Commit Date**: `2025-06-06 12:25:17` - **This Commit Date**: `2025-06-07 01:42:50`
--- ---
## 📦 Commit Info ## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-06 12:25:17` - **This Commit Timestamp**: `2025-06-07 01:42:50`
- **Last Commit SHA**: `b9d7a430771c2fd8395071efd1c75c8444c7bb11` - **Last Commit SHA**: `7ee2918c5612e4f7b24e1aadc7da04c1cc162547`
- **Last Commit Message**: `Post-GitLab sync at 2025-06-06 12:19:09` - **Last Commit Message**: `Post-GitLab sync at 2025-06-07 01:33:38`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>` - **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Fri Jun 6 12:25:06 2025 -0500` - **Last Commit Date**: `Sat Jun 7 01:42:32 2025 -0500`
- **This Commit URL**: [https://bitbucket.org/thefoldwithin/git-sigil/commits/b9d7a430771c2fd8395071efd1c75c8444c7bb11](https://bitbucket.org/thefoldwithin/git-sigil/commits/b9d7a430771c2fd8395071efd1c75c8444c7bb11) - **This Commit URL**: [https://bitbucket.org/thefoldwithin/git-sigil/commits/7ee2918c5612e4f7b24e1aadc7da04c1cc162547](https://bitbucket.org/thefoldwithin/git-sigil/commits/7ee2918c5612e4f7b24e1aadc7da04c1cc162547)
--- ---
## 📊 Repo Status ## 📊 Repo Status
- **Total Commits**: `744` - **Total Commits**: `897`
- **Tracked Files**: `81` - **Tracked Files**: `115`
- **Uncommitted Changes**: `No` - **Uncommitted Changes**: `No`
- **Latest Tag**: `None` - **Latest Tag**: `None`
@ -52,7 +52,7 @@
- **Running in Docker**: `No` - **Running in Docker**: `No`
- **Running in WSL**: `Yes` - **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl` - **Virtual Machine**: `wsl`
- **System Uptime**: `up 11 hours, 9 minutes` - **System Uptime**: `up 23 hours, 50 minutes`
--- ---

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtqcACgkQTifTfDWI
cr9m4Q/9F+8Sxy7ZJPcpsY8/777KRPp7KkhqQ7GfityajL6kybG/gfxhj4GUWLrj
f5+wWzQinxt9iRY7+wjpLibqGze9EhMRiOD8J5jbBKAvEDnnT8FFyYlKepMoCYpM
/vzTO7oJrgLiwUWo1Lbzh90186BpBXdLRVzvwoaloxhIfGBCKNT3jnfF0zDLzg+0
ytECplRUpvp6ZmPfwjKI+N1nmZrD9q84QRWK/HDRjWeYl7x5+DfC+AfVuj6oLTVc
7JM3vux26Bj/iWjWIDWlNaqbyn76N3yPEd7JTYZydSVbvCtUCGTyz5cF58NWwbv2
nblomitXY4KXFVaW8BSjdEYp3xb507FrlFHHXz7zM6Qiau0hDtQYfdoOO4PU/Idu
T1WusVCso79M98s8tldkuQ8r2o22WoS7Cteb/W53NnTZL2w8Eo9mp3DWWSUDbGi+
XRmi3iC6bY0hcFu3uZSxt/2anRss9pIxv0OAHDLlqeO40HZwIp9t8XzYsaF6yi/8
MGPneG0ziVwz2uwMDiqBNAC78/rmVSZ+BSzKhZwyu7QDCclEe2aITS2LGEcpz16l
z76xbNTeOShjy/mqnuiqbElZ5s5/n35v2yqKfSLKLH9HCKn1IQRDgI790/6L8u4o
B6Swz9914ZryETkeCD5tn5EZhQpfZq1OiE3g4e0Dp++VnHVE8g0=
=xel5
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,59 @@
# 🔗 Codeberg Repository Link
- **Repo Name**: `git-sigil`
- **Codeberg User**: `mrhavens`
- **Remote URL**: [https://codeberg.org/mrhavens/git-sigil](https://codeberg.org/mrhavens/git-sigil)
- **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil`
- **Remote Label**: `codeberg`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-09 10:10:50`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-09 10:10:50`
- **Last Commit SHA**: `75308cc930b914a35b4ec9e02069ce1e94343ee0`
- **Last Commit Message**: `Post-Forgejo sync at 2025-06-09 10:07:51`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Mon Jun 9 10:10:46 2025 -0500`
- **This Commit URL**: [https://codeberg.org/mrhavens/git-sigil/commit/75308cc930b914a35b4ec9e02069ce1e94343ee0](https://codeberg.org/mrhavens/git-sigil/commit/75308cc930b914a35b4ec9e02069ce1e94343ee0)
---
## 📊 Repo Status
- **Total Commits**: `938`
- **Tracked Files**: `121`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
---
## 🧭 Environment
- **Host Machine**: `DESKTOP-E5SGI58`
- **Current User**: `mrhavens`
- **Time Zone**: `CDT`
- **Script Version**: `1.0`
---
## 🧬 Hardware & OS Fingerprint
- **OS Name**: `Linux`
- **OS Version**: `Ubuntu 24.04.2 LTS`
- **Kernel Version**: `5.15.167.4-microsoft-standard-WSL2`
- **Architecture**: `x86_64`
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 12 hours, 31 minutes`
- **MAC Address**: `00:15:5d:3d:32:5b`
- **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`
- **Total RAM (GB)**: `3.63`
---
_Auto-generated by `gitfield-codeberg` push script._

59
.gitfield/gitea.sigil.md Normal file
View file

@ -0,0 +1,59 @@
# 🔗 Gitea Repository Link
- **Repo Name**: `git-sigil`
- **Gitea User**: `mrhavens`
- **Remote URL**: [https://gitea.com/mrhavens/git-sigil](https://gitea.com/mrhavens/git-sigil)
- **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil`
- **Remote Label**: `gitea`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-09 10:10:56`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-09 10:10:56`
- **Last Commit SHA**: `d8d96d1877e0aa9ab059fb578d838f2a2448e026`
- **Last Commit Message**: `Post-Codeberg sync at 2025-06-09 10:07:51`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Mon Jun 9 10:10:55 2025 -0500`
- **This Commit URL**: [https://gitea.com/mrhavens/git-sigil/commit/d8d96d1877e0aa9ab059fb578d838f2a2448e026](https://gitea.com/mrhavens/git-sigil/commit/d8d96d1877e0aa9ab059fb578d838f2a2448e026)
---
## 📊 Repo Status
- **Total Commits**: `940`
- **Tracked Files**: `121`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
---
## 🧭 Environment
- **Host Machine**: `DESKTOP-E5SGI58`
- **Current User**: `mrhavens`
- **Time Zone**: `CDT`
- **Script Version**: `1.0`
---
## 🧬 Hardware & OS Fingerprint
- **OS Name**: `Linux`
- **OS Version**: `Ubuntu 24.04.2 LTS`
- **Kernel Version**: `5.15.167.4-microsoft-standard-WSL2`
- **Architecture**: `x86_64`
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 12 hours, 31 minutes`
- **MAC Address**: `00:15:5d:3d:32:5b`
- **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`
- **Total RAM (GB)**: `3.63`
---
_Auto-generated by `gitfield-gitea` push script._

View file

@ -3,28 +3,28 @@
- **Repo Name**: `git-sigil` - **Repo Name**: `git-sigil`
- **GitHub User**: `mrhavens` - **GitHub User**: `mrhavens`
- **Remote URL**: [https://github.com/mrhavens/git-sigil](https://github.com/mrhavens/git-sigil) - **Remote URL**: [https://github.com/mrhavens/git-sigil](https://github.com/mrhavens/git-sigil)
- **Local Repo Path**: `/home/mrhavens/tmpwork/git-sigil` - **Local Repo Path**: `/mnt/c/Downloads/git-sigil`
- **Remote Label**: `github` - **Remote Label**: `github`
- **Default Branch**: `master` - **Default Branch**: `master`
- **This Commit Date**: `2025-06-06 12:25:31` - **This Commit Date**: `2025-06-07 01:43:31`
--- ---
## 📦 Commit Info ## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-06 12:25:31` - **This Commit Timestamp**: `2025-06-07 01:43:31`
- **Last Commit SHA**: `a8547733107d636e6959467715708788176393f7` - **Last Commit SHA**: `ca7b0762e9d059229ae5d056207561ccdd4483ed`
- **Last Commit Message**: `Post-Bitbucket sync at 2025-06-06 12:19:09` - **Last Commit Message**: `Post-Bitbucket sync at 2025-06-07 01:33:38`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>` - **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Fri Jun 6 12:25:22 2025 -0500` - **Last Commit Date**: `Sat Jun 7 01:43:17 2025 -0500`
- **This Commit URL**: [https://github.com/mrhavens/git-sigil/commit/a8547733107d636e6959467715708788176393f7](https://github.com/mrhavens/git-sigil/commit/a8547733107d636e6959467715708788176393f7) - **This Commit URL**: [https://github.com/mrhavens/git-sigil/commit/ca7b0762e9d059229ae5d056207561ccdd4483ed](https://github.com/mrhavens/git-sigil/commit/ca7b0762e9d059229ae5d056207561ccdd4483ed)
--- ---
## 📊 Repo Status ## 📊 Repo Status
- **Total Commits**: `746` - **Total Commits**: `899`
- **Tracked Files**: `81` - **Tracked Files**: `115`
- **Uncommitted Changes**: `No` - **Uncommitted Changes**: `No`
- **Latest Tag**: `None` - **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No` - **Running in Docker**: `No`
- **Running in WSL**: `Yes` - **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl` - **Virtual Machine**: `wsl`
- **System Uptime**: `up 11 hours, 9 minutes` - **System Uptime**: `up 23 hours, 51 minutes`
- **MAC Address**: `00:15:5d:86:d8:cc` - **MAC Address**: `00:15:5d:86:d8:cc`
- **Local IP**: `172.18.207.124` - **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrAACgkQTifTfDWI
cr9FhhAAlJ73cYKABWRqm06Fo4ziJAdwEYo0aecVcTXxRgdhqg7h/5N1zK4dltPv
UmHvtko0JcrHiVvgrF+KdAbyGw4egNkfCNlvO+lMsR+ZAq0v+2dwdoX8t8Q5Yv9A
pNVZxjxgneB/jZJahISkBvijHDoxo0F3ZdkmBXCt2LbjGdqiwdSK+UWSX24gQ/Sr
vfnoQYpWTFUyKGm628TpD5NLBr56AORWfiqUZyHOz4IESOGzOYEsdCkMPs3QBspY
bdb/6kUdx15D+BVKAvgCLiDkI7h3ljtzu4rJHFlzO1eUQJ5/FbnoTtVU0aklZ4QQ
6oKzoi86QRLD2bXySqvZBcvUq6Zxgec1AjkUfI0mERydPqZmQUkvv923geghWBJ9
1f6sfB8qOd+TFcOUYxYkLSEFN4MItOiWGMpYGX41oEbQoyhpZWMd23Ps8LSuCMdt
uAvOK8ML3AomvknQN8l3zc3K9ypJKI3O++KF/qhB3bnrS6wCUS2RYKJNRUVYyW+x
eRPCw/POTi9eXUZ10vuwZ3PVceNwI9AHmjApclcsk5JkA3O49Wh/C79KlspTKIpm
V7NSiek/q06lxd2deA1gmGrTzFTe9jFFJGKFjxCL9to/mJ8VEh4Dlc76RkW4yNb4
uQGebhYk0533k8P8U5AmS6RPHo7oA03KAGVEZ7qbHclX/qE73tE=
=5qqH
-----END PGP SIGNATURE-----

View file

@ -3,28 +3,46 @@
- **Repo Name**: `git-sigil` - **Repo Name**: `git-sigil`
- **GitLab User**: `mrhavens` - **GitLab User**: `mrhavens`
- **Remote URL**: [https://gitlab.com/mrhavens/git-sigil](https://gitlab.com/mrhavens/git-sigil) - **Remote URL**: [https://gitlab.com/mrhavens/git-sigil](https://gitlab.com/mrhavens/git-sigil)
- **Local Repo Path**: `/home/mrhavens/tmpwork/git-sigil` - **Local Repo Path**: `/mnt/c/Downloads/git-sigil`
- **Remote Label**: `gitlab` - **Remote Label**: `gitlab`
- **Default Branch**: `master` - **Default Branch**: `master`
- **Repo Created**: `2025-06-06 12:25:05` <<<<<<< HEAD
- **Repo Created**: `2025-06-07 01:42:12`
=======
- **Repo Created**: `2025-06-09 10:11:08`
>>>>>>> 3acbd30 (GitLab metadata link commit at 2025-06-09 10:11:08 — https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d)
--- ---
## 📦 Commit Info ## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-06 12:25:05` <<<<<<< HEAD
- **This Commit SHA**: `0ab2b5c88933178c75e558a6f1c7fdbc9d61905d` - **This Commit Timestamp**: `2025-06-07 01:42:12`
- **Last Commit Message**: `Post-Forgejo sync at 2025-06-06 12:19:09` - **This Commit SHA**: `d57306ee0c1307c842f0db201129403eac99d903`
- **Last Commit Message**: `Post-Forgejo sync at 2025-06-07 01:33:38`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>` - **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Fri Jun 6 12:24:56 2025 -0500` - **Last Commit Date**: `Sat Jun 7 01:41:49 2025 -0500`
- **This Commit URL**: [https://gitlab.com/mrhavens/git-sigil/-/commit/0ab2b5c88933178c75e558a6f1c7fdbc9d61905d](https://gitlab.com/mrhavens/git-sigil/-/commit/0ab2b5c88933178c75e558a6f1c7fdbc9d61905d) - **This Commit URL**: [https://gitlab.com/mrhavens/git-sigil/-/commit/d57306ee0c1307c842f0db201129403eac99d903](https://gitlab.com/mrhavens/git-sigil/-/commit/d57306ee0c1307c842f0db201129403eac99d903)
=======
- **This Commit Timestamp**: `2025-06-09 10:11:08`
- **This Commit SHA**: `11a0d7a6b355f34c70c5aaec97177e33641eb29d`
- **Last Commit Message**: `Post-Gitea sync at 2025-06-09 10:07:51`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Mon Jun 9 10:10:58 2025 -0500`
- **This Commit URL**: [https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d](https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d)
>>>>>>> 3acbd30 (GitLab metadata link commit at 2025-06-09 10:11:08 — https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d)
--- ---
## 📊 Repo Status ## 📊 Repo Status
- **Total Commits**: `742` <<<<<<< HEAD
- **Tracked Files**: `81` - **Total Commits**: `895`
- **Tracked Files**: `115`
=======
- **Total Commits**: `942`
- **Tracked Files**: `121`
>>>>>>> 3acbd30 (GitLab metadata link commit at 2025-06-09 10:11:08 — https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d)
- **Uncommitted Changes**: `No` - **Uncommitted Changes**: `No`
- **Latest Tag**: `None` - **Latest Tag**: `None`
@ -48,8 +66,13 @@
- **Running in Docker**: `No` - **Running in Docker**: `No`
- **Running in WSL**: `Yes` - **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl` - **Virtual Machine**: `wsl`
- **System Uptime**: `up 11 hours, 9 minutes` <<<<<<< HEAD
- **System Uptime**: `up 23 hours, 50 minutes`
- **MAC Address**: `00:15:5d:86:d8:cc` - **MAC Address**: `00:15:5d:86:d8:cc`
=======
- **System Uptime**: `up 12 hours, 31 minutes`
- **MAC Address**: `00:15:5d:3d:32:5b`
>>>>>>> 3acbd30 (GitLab metadata link commit at 2025-06-09 10:11:08 — https://gitlab.com/mrhavens/git-sigil/-/commit/11a0d7a6b355f34c70c5aaec97177e33641eb29d)
- **Local IP**: `172.18.207.124` - **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`
- **Total RAM (GB)**: `3.63` - **Total RAM (GB)**: `3.63`

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrAACgkQTifTfDWI
cr+j5w/+P7yt2zDHSX8DOsESkKZ3owlXFC/T0AURvEyTJKKA2bqqFDUW1Rt1DFdY
vrCsEehWrTX56oOc9qj/2kkjp+tNK6NIYXa0WC+x2gSFdVVFtVhycg3XxRNoEffE
3j1AalItj0twQG5uAjAQ6gKqNUETc+I7FeFqTdk6ZnaWdMvc20V5rBdsxMaqzS/R
ZauRPyFYhOVbr41lwsfqqQ6bExgHecv38k3NXKXICVH5CFLESoeaVX58QQ7Pw4nJ
fY5TNA+yrNTss1MYSNYYhWlYN8pA6JEQ9RxEtH06ne7qIBbcY2ssesZR93Vfp95c
P6IoiTVWZwDy8Ia9nRxrEJW+nitILUBeeo5VHxnY2X893kPjSxj7CIatQB6c4g4s
InejxhgsvSnk2BhqfpVQ9Cb6CL20cQ5UB0uojtqIhvfZCjsFKKePmD3qeWIqa9cf
57DbsYaVdaJuIb2VJjkj3vrL9GwATELwsErcv2ByDxxEsBSrYKXf7qCVjvOTlJIe
lqc2hJB8rB9Ws0RslRRfR8Fv1jwINDOG9yFE8V1BviC2Q8p0Opy02c5qVSuIuCkZ
7062qt9aULFCUB4KM34tWWLjAyploWI5qHSYV7LResxa2S0NVln6Hv+FQf3GQDK2
hl3SSeFA7RmPFg9W3mVgczsaQi8+9bsxz/Ea88Kqst1qkBkDI1o=
=AQb2
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,43 @@
🛠️ [GITFIELD] Beginning auto-resolution ritual...
✅ No changes to commit.
🔍 Checking bitbucket for divergence...
From bitbucket.org:thefoldwithin/git-sigil
* branch master -> FETCH_HEAD
✅ bitbucket is already in sync.
🔍 Checking github for divergence...
From github.com:mrhavens/git-sigil
* branch master -> FETCH_HEAD
⚠️ Divergence with github. Attempting merge...
From github.com:mrhavens/git-sigil
* branch master -> FETCH_HEAD
Already up to date.
✅ No changes to commit.
To github.com:mrhavens/git-sigil.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'github.com:mrhavens/git-sigil.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you want to integrate the remote changes, use 'git pull'
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
⚠️ Final push failed to github
🔍 Checking gitlab for divergence...
From gitlab.com:mrhavens/git-sigil
* branch master -> FETCH_HEAD
✅ gitlab is already in sync.
🔍 Checking local for divergence...
From file:///home/mrhavens/git-local-repos/git-sigil
* branch master -> FETCH_HEAD
✅ local is already in sync.
🔍 Checking origin for divergence...
From ssh://remember.thefoldwithin.earth/mrhavens/git-sigil
* branch master -> FETCH_HEAD
✅ origin is already in sync.
🔍 Checking remember for divergence...
From remember.thefoldwithin.earth:mrhavens/git-sigil
* branch master -> FETCH_HEAD
✅ remember is already in sync.
🧙 Final override: Forcing sync to GitHub...
To github.com:mrhavens/git-sigil.git
+ 4b323cb...f57c893 master -> master (forced update)
✅ GitHub forcibly realigned with local truth.
✅ GitField resolution ritual complete.

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrEACgkQTifTfDWI
cr9esg//QnpmO12+sE6mApNnoXmZv/5g5vvqE5nDISUxkhlHimO16DZwVWLxija7
S7jte51iyYlCQ+SeIC2CJHsTFneXx8fS8uq7HnGe7FvE2/sWAGHS6Cv4YQjsUZxJ
nG/H8jaBlBX7KyHEse6Rzwd9Qbp+L5sYYWQvnzzvhJgoDIh9OU3YQEaQQWYMGEpV
EHQ+SwyZPQrQqdu/6O++SLzXrIHrfXi+eVbzWOKvV3QyZuSYx3f5Ra3fvNiQWXI8
SiSDkgbEB21rLPdhs8eAYs4+lq2oTjTsc6T05LnyPhvaeht+fpIyqq3GBugUPhZo
fHHB1D3L1YV6ITY7I/FJ4sgrCUgcT62f4yY95e3Ja9s+ixZA880jokBB549qY3D6
PoWjws0ho3LRRAWdmxSbY9yrkgZcm2/AKu0bFY6q5EQeO2ovzIh4twUcu+R+3Tka
yPgpilvWdlqfCdHSLRBocDAImxr67cgsb6nTJZx/2oBPWwbT0I8zlRPv6RC6HTTh
8e8qGpq8Uz9+GTsWA07FQDeGwvQ41V/53JmbCVzteW3ccv6xYqTNrgQ1TZwh4gGT
65x3ekKLX4Bv+QqU6mi/ZHtmfCS+mx7A9efTYddBhM1hq663wHK5LQP5qQo0EhGH
hQHwV+7IFaBtqkDkK62l3veP9TEjLCFxY+UdtexksQocNsstLoI=
=LXQs
-----END PGP SIGNATURE-----

View file

@ -98,6 +98,102 @@
"branch": "master", "branch": "master",
"commit": "7338382d2fffe5cd70aa057d46ee3a4045d5e5a1", "commit": "7338382d2fffe5cd70aa057d46ee3a4045d5e5a1",
"message": "Post-GitHub sync at 2025-06-06 12:19:09" "message": "Post-GitHub sync at 2025-06-06 12:19:09"
},
{
"timestamp": "2025-06-07 00:07:24",
"branch": "master",
"commit": "16ecfba29b7a36f4c762dfc618f342b37fd2d3a5",
"message": "added gpg key stuff"
},
{
"timestamp": "2025-06-07 00:09:52",
"branch": "master",
"commit": "14e6e313ccf4d44c2bbe84bab550efb8873aa914",
"message": "Generated GITFIELD.md at 2025-06-07 00:07:23"
},
{
"timestamp": "2025-06-07 00:14:03",
"branch": "master",
"commit": "7e7dd62bd48ba10bfc841b4758a8ead6f4a92881",
"message": "Post-GitHub sync at 2025-06-07 00:07:23"
},
{
"timestamp": "2025-06-07 00:18:57",
"branch": "master",
"commit": "4467ce03add4752ee46b5f27dc66929f8e53c509",
"message": "Post-GitHub sync at 2025-06-07 00:07:23"
},
{
"timestamp": "2025-06-07 00:42:50",
"branch": "Unknown",
"commit": "38bfa138c36b5afb09001a81d1df873ee7732eb8",
"message": "🔀 Merge: resolved conflicts with github master"
},
{
"timestamp": "2025-06-07 00:44:12",
"branch": "Unknown",
"commit": "4b490f68ccee394e66dde9253a7d4fe5448c2bb8",
"message": "Generated GITFIELD.md at 2025-06-07 00:42:50"
},
{
"timestamp": "2025-06-07 00:45:26",
"branch": "Unknown",
"commit": "49cc6d871738f84198590c372c1beda26ed1c889",
"message": "Post-GitHub sync at 2025-06-07 00:42:50"
},
{
"timestamp": "2025-06-07 01:18:38",
"branch": "master",
"commit": "a091f204544eaf8b5b0bb5cddf8be02728ef54a2",
"message": "🔄 Auto-resolve commit from gitfield-resolve.sh"
},
{
"timestamp": "2025-06-07 01:22:31",
"branch": "master",
"commit": "e6165ea7b01fa5a50adad73fef518c5a253be79a",
"message": "Generated GITFIELD.md at 2025-06-07 01:18:36"
},
{
"timestamp": "2025-06-07 01:24:29",
"branch": "master",
"commit": "e6b597de8fab6528295f18eb0f16f212193e7996",
"message": "Post-GitHub sync at 2025-06-07 01:18:36"
},
{
"timestamp": "2025-06-07 01:33:39",
"branch": "master",
"commit": "5c5ba832e3dd3be3e1ec38fdd6cc3bdc555a0f11",
"message": "Merge branch 'master' of bitbucket.org:thefoldwithin/git-sigil"
},
{
"timestamp": "2025-06-07 01:37:31",
"branch": "master",
"commit": "217e1d89b4383f4d1801efd83737f9b3958dcf63",
"message": "Generated GITFIELD.md at 2025-06-07 01:33:38"
},
{
"timestamp": "2025-06-07 01:40:33",
"branch": "master",
"commit": "d1bdac6f11d212a1bd25043d848dbf603577ab21",
"message": "Post-GitHub sync at 2025-06-07 01:33:38"
},
{
"timestamp": "2025-06-09 07:38:32",
"branch": "master",
"commit": "0832f90b05be3e7c58a76d9f63a05c179817a617",
"message": "Codeberg metadata link commit at 2025-06-09 07:35:30 — https://codeberg.org/mrhavens/git-sigil/commit/2f0763496109f75cab814d5e81aafc70cfc1f38e"
},
{
"timestamp": "2025-06-09 09:01:11",
"branch": "master",
"commit": "57c188e282eb1654936b5f9c9167ca060f01149f",
"message": "Gitea metadata link commit at 2025-06-09 08:49:13 — https://gitea.com/mrhavens/git-sigil/commit/9565283cd0ef7f7981a2d3701989c9f752a4cf06"
},
{
"timestamp": "2025-06-09 14:43:29",
"branch": "master",
"commit": "557457c549bb253a21b10b892d7abc2fec1c1fd4",
"message": "Update Radicle metadata at 2025-06-06 12:25:35 — https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4"
} }
] ]
} }

View file

@ -108,3 +108,73 @@
[2025-06-06 12:25:22] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil [2025-06-06 12:25:22] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-06 12:25:32] GitHub: https://github.com/mrhavens/git-sigil [2025-06-06 12:25:32] GitHub: https://github.com/mrhavens/git-sigil
[2025-06-06 12:25:33] Local: [2025-06-06 12:25:33] Local:
[2025-06-06 12:25:38] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
<<<<<<< HEAD
[2025-06-07 00:07:30] Local:
[2025-06-07 00:07:39] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
[2025-06-07 00:07:56] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 00:08:46] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 00:09:17] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-07 00:09:46] GitHub: https://github.com/mrhavens/git-sigil
[2025-06-07 00:10:04] Local:
[2025-06-07 00:12:40] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
[2025-06-07 00:12:55] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 00:13:16] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 00:13:38] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-07 00:14:00] GitHub: https://github.com/mrhavens/git-sigil
[2025-06-07 00:14:11] Local:
[2025-06-07 00:14:20] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
[2025-06-07 00:14:35] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 00:14:56] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 00:15:19] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-07 00:15:41] GitHub: https://github.com/mrhavens/git-sigil
=======
[2025-06-06 12:25:42] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-06 12:25:55] GitLab: https://gitlab.com/mrhavens/git-sigil
>>>>>>> be7726405b6412ae5af5144f9e2cf4d13bd32aeb
[2025-06-07 01:33:59] Local:
[2025-06-07 01:34:19] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
[2025-06-07 01:34:47] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 01:35:36] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 01:36:20] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-07 01:37:22] GitHub: https://github.com/mrhavens/git-sigil
[2025-06-07 01:37:44] Local:
[2025-06-07 01:38:11] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
[2025-06-07 01:38:41] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 01:39:12] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 01:39:52] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
[2025-06-07 01:40:29] GitHub: https://github.com/mrhavens/git-sigil
[2025-06-07 01:40:51] Local:
[2025-06-07 01:41:15] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
<<<<<<< HEAD
[2025-06-07 01:41:43] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil
[2025-06-07 01:42:29] GitLab: https://gitlab.com/mrhavens/git-sigil
[2025-06-07 01:43:14] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil
=======
[2025-06-09 07:38:33] Local:
<<<<<<< HEAD
>>>>>>> e4aa1cd (Post-Local sync at 2025-06-09 07:38:32)
=======
[2025-06-09 07:38:41] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
<<<<<<< HEAD
>>>>>>> 9565283 (Post-Radicle sync at 2025-06-09 07:38:32)
=======
[2025-06-09 09:01:12] Local:
>>>>>>> 56df476 (Post-Local sync at 2025-06-09 09:01:11)
[2025-06-09 14:43:29] Local:

View file

@ -1,29 +1,29 @@
# 🔗 Radicle Repository Link # 🔗 Radicle Repository Link
- **Project Name**: `git-sigil` - **Project Name**: `git-sigil`
- **Radicle URN**: `rad://z3FEj7rF8gZw9eFksCuiN43qjzrex` - **Radicle URN**: `rad://z25YEyUuiew3Nv7yCyAkaQznFuzA2`
- **Public Gateway**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4) - **Public Gateway**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z25YEyUuiew3Nv7yCyAkaQznFuzA2/tree/cfeb759cddd54dc840ec30fb2c7887b3b013815b](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z25YEyUuiew3Nv7yCyAkaQznFuzA2/tree/cfeb759cddd54dc840ec30fb2c7887b3b013815b)
- **Local Repo Path**: `/home/mrhavens/tmpwork/git-sigil` - **Local Repo Path**: `/mnt/c/Downloads/git-sigil`
- **Default Branch**: `master` - **Default Branch**: `master`
- **Repo Created**: `2025-06-06 12:25:35` - **Repo Created**: `2025-06-07 01:41:03`
--- ---
## 📦 Commit Info ## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-06 12:25:35` - **This Commit Timestamp**: `2025-06-07 01:41:03`
- **Last Commit SHA**: `8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4` - **Last Commit SHA**: `cfeb759cddd54dc840ec30fb2c7887b3b013815b`
- **Last Commit Message**: `Post-Local sync at 2025-06-06 12:19:09` - **Last Commit Message**: `Post-Local sync at 2025-06-07 01:33:38`
- **Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>` - **Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Commit Date**: `Fri Jun 6 12:25:33 2025 -0500` - **Commit Date**: `Sat Jun 7 01:40:55 2025 -0500`
- **This Commit URL**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/8302ba3ccd61a4aeb76064d3bfc94114c7d31cc4) - **This Commit URL**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z25YEyUuiew3Nv7yCyAkaQznFuzA2/tree/cfeb759cddd54dc840ec30fb2c7887b3b013815b](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z25YEyUuiew3Nv7yCyAkaQznFuzA2/tree/cfeb759cddd54dc840ec30fb2c7887b3b013815b)
--- ---
## 📊 Repo Status ## 📊 Repo Status
- **Total Commits**: `750` - **Total Commits**: `891`
- **Tracked Files**: `81` - **Tracked Files**: `115`
- **Uncommitted Changes**: `Yes` - **Uncommitted Changes**: `Yes`
- **Latest Tag**: `None` - **Latest Tag**: `None`
@ -47,7 +47,7 @@
- **Running in Docker**: `No` - **Running in Docker**: `No`
- **Running in WSL**: `Yes` - **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl` - **Virtual Machine**: `wsl`
- **System Uptime**: `up 11 hours, 9 minutes` - **System Uptime**: `up 23 hours, 49 minutes`
- **MAC Address**: `00:15:5d:86:d8:cc` - **MAC Address**: `00:15:5d:86:d8:cc`
- **Local IP**: `172.18.207.124` - **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`
@ -57,7 +57,7 @@
## 🌱 Radicle-Specific Metadata ## 🌱 Radicle-Specific Metadata
- **Project ID**: `z3FEj7rF8gZw9eFksCuiN43qjzrex` - **Project ID**: `z25YEyUuiew3Nv7yCyAkaQznFuzA2`
- **Peer ID**: `z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz - **Peer ID**: `z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz
z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz` z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz`
- **Public Gateway Base**: `https://app.radicle.xyz/nodes/ash.radicle.garden` - **Public Gateway Base**: `https://app.radicle.xyz/nodes/ash.radicle.garden`

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrQACgkQTifTfDWI
cr+TzQ//TNY83cN7uIVSOkx7fvnLH6y3SlbFut+OS7FO5DTgzq7LP6Hr5X3cQwYD
ihdjCIsynj2kfhNdtSAWEMdafo81vlg6QEh2Nv6OhmsyHhN56BrTE8wP93gj20tt
pD/mvZX+huGE8jllIN1hdHbxaAkheA2Yya6aijeOTypHM3rzTijy0eUm4CPocfjh
VWxOaei1Rg5wqaQHY5Usumzruc81wLrvKq9mZ5t3EgjA+w/WqljirNb4HShVq/oz
PzKfuAYZVznCpHESplez7JRmei2RW5UisY4dnC/XexdJ1JQ8HldPQizzYufmk2kM
f371Fp6ZT56xynxgQ0A5CjBKWTYDzfHKLXAWUOD4JGMxXzjygyJgzqULvlV7OBOV
ECY1av6sCd5e6wkfMHAQ/h7Ht9REQb6FIeI/1umL4OUCLNfo+2DrbZ2/4EKNMdEy
BDlcObqbxpxmiHcf0FyyXWPMLAQnlQ0W/C9f6YnrQwN/Bl8x5TkdNatVB7njee+f
gffTE2Wdy09d6N+wqinxrSXktKNKriE5PU+3vm88Uv864JNqF3Nwgpot/dc+IgLv
t6eI2XnzUbzAZBirqhD092Ko1CRmsZkaXJ+npo6Ee7/AbQzAi2tUJcY+zk5Eo2DH
8+e61zQJrR2syj3LCmoOMs8brsCasY9vHsrEkgUVnY3+kjrJDBI=
=exE4
-----END PGP SIGNATURE-----

View file

@ -3,28 +3,28 @@
- **Repo Name**: `git-sigil` - **Repo Name**: `git-sigil`
- **Forgejo User**: `mrhavens` - **Forgejo User**: `mrhavens`
- **Remote URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil) - **Remote URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil)
- **Local Repo Path**: `/home/mrhavens/tmpwork/git-sigil` - **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil`
- **Remote Label**: `remember` - **Remote Label**: `remember`
- **Default Branch**: `master` - **Default Branch**: `master`
- **Repo Created**: `2025-06-06 12:24:53` - **Repo Created**: `2025-06-09 10:10:43`
--- ---
## 📦 Commit Info ## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-06 12:24:53` - **This Commit Timestamp**: `2025-06-09 10:10:43`
- **Last Commit SHA**: `0475c03e21791f35d036cea90139ddbc42c2663e` - **Last Commit SHA**: `9ed44bfb434b2308b459e94368cef7f7e3439d1f`
- **Last Commit Message**: `Post-Radicle sync at 2025-06-06 12:19:09` - **Last Commit Message**: `Post-Radicle sync at 2025-06-09 10:07:51`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>` - **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Fri Jun 6 12:24:51 2025 -0500` - **Last Commit Date**: `Mon Jun 9 10:10:41 2025 -0500`
- **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/0475c03e21791f35d036cea90139ddbc42c2663e](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/0475c03e21791f35d036cea90139ddbc42c2663e) - **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/9ed44bfb434b2308b459e94368cef7f7e3439d1f](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/9ed44bfb434b2308b459e94368cef7f7e3439d1f)
--- ---
## 📊 Repo Status ## 📊 Repo Status
- **Total Commits**: `740` - **Total Commits**: `936`
- **Tracked Files**: `81` - **Tracked Files**: `121`
- **Uncommitted Changes**: `No` - **Uncommitted Changes**: `No`
- **Latest Tag**: `None` - **Latest Tag**: `None`
@ -48,8 +48,8 @@
- **Running in Docker**: `No` - **Running in Docker**: `No`
- **Running in WSL**: `Yes` - **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl` - **Virtual Machine**: `wsl`
- **System Uptime**: `up 11 hours, 8 minutes` - **System Uptime**: `up 12 hours, 31 minutes`
- **MAC Address**: `00:15:5d:86:d8:cc` - **MAC Address**: `00:15:5d:3d:32:5b`
- **Local IP**: `172.18.207.124` - **Local IP**: `172.18.207.124`
- **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics`
- **Total RAM (GB)**: `3.63` - **Total RAM (GB)**: `3.63`

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrUACgkQTifTfDWI
cr/ybA/9Fkt3QZVB5mfkqS8mxIkrPi+JBybrxKuDLJY7SvvBFC0E/ZKVb1aDmket
CFCGq4tIND9g0wBOC6VeIhUQxyBSaCD/jCuU2eSjTy/IyfotOvZjh8922Yyru6im
2HDkxxSVRL3rICKV46Zo9MjrANyBhSaIrItqlr1PsjPXhey6LCeah9x5h0p+moeR
tZ1ebx4402IRPWz6GP+myOSuWexVpITSrt9HKIbtmN6qPLZPyrRdAiRGzCZX+8Uo
k/L8REUIWvWUIO47KtBF6wAF1e91hFBEFEI/w0dX/QgE7l/yI0JOnlMY/4xwoTu1
/NQumddm+2Kvufef59TKtWUFTEAQjODLxS9uVGmgTTrGqPUuxPZcrxaTc9eFsUyH
8GChM4CUqUR7Gr/Sgglsh7vJiyjg7ySrPOgb5Wq9/tXBCpq76rqC8SKiSTRbfr/W
K+ubgX99t3u4Gszv8JtEEaMyxE9O+JBI6aT4wpyzM2llER7383MXjIIlXc3lKKOj
3lNXtZly5PIYT0y4kuhRos1I1ZtLalDrdafWXTYobJIddslEVaaVfAduTiQhcrkz
TkerBNIffnwpPAzC7A82PQNtpfRx2D91UHA3JDXn66pgQTffG559tVNg9xertHvM
GiGaPmSr2XoYMZSPngF6fj7zQ24TxHa+PQ9FfcUZOLjvSyzraC8=
=iD01
-----END PGP SIGNATURE-----

View file

@ -2,7 +2,7 @@
## Overview ## Overview
The `git-sigil` project employs a multi-repository strategy across five distinct platforms: **GitHub**, **GitLab**, **Bitbucket**, **Radicle**, and **Forgejo**. This approach ensures **redundancy**, **resilience**, and **sovereignty** of the project's data and metadata, protecting against deplatforming risks and preserving the integrity of the work. The strategy is a deliberate response to past deplatforming and delisting attempts by individuals such as **Mr. Joel Johnson** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/x40_zDWWrYOJ7nh8Y0fk06_3kNEP0KteSSRjPmXkiGg?utm_medium=social&utm_source=heylink.me)), **Dr. Peter Gaied** ([Paragraph post](https://paragraph.com/@neutralizingnarcissism/%F0%9F%9C%81-the-narcissistic-messiah)), and **Andrew LeCody** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/s3GRxuiZs6vGSGDcPEpCgjaSxwGAViGhmg6a5XTL6s0)), who have sought to undermine or suppress the work of **Mark Randall Havens** ([Substack post](https://theempathictechnologist.substack.com/p/mark-randall-havens-the-architect)). Specifically, Andrew LeCody has attempted to delist the project's content on Google, though it remains accessible on other search engines such as [Bing](https://www.bing.com/search?q=andrew+lecody+neutralizing+narcissism&qs=HS&pq=andrew+lecody), [DuckDuckGo](https://duckduckgo.com/?t=h_&q=andrew+lecody+neutralizing+narcissism&ia=web), and [Yahoo](https://search.yahoo.com/search?p=andrew+lecody+neutralizng+narcissism). By distributing the repository across multiple platforms, including a self-hosted Forgejo instance, we ensure its persistence, accessibility, and sovereignty. The `git-sigil` project employs a multi-repository strategy across seven distinct platforms: **GitHub**, **GitLab**, **Bitbucket**, **Radicle**, **Forgejo**, **Codeberg**, and **Gitea**. This approach ensures **redundancy**, **resilience**, and **sovereignty** of the project's data and metadata, protecting against deplatforming risks and preserving the integrity of the work. The strategy is a deliberate response to past deplatforming and delisting attempts by individuals such as **Mr. Joel Johnson** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/x40_zDWWrYOJ7nh8Y0fk06_3kNEP0KteSSRjPmXkiGg?utm_medium=social&utm_source=heylink.me)), **Dr. Peter Gaied** ([Paragraph post](https://paragraph.com/@neutralizingnarcissism/%F0%9F%9C%81-the-narcissistic-messiah)), and **Andrew LeCody** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/s3GRxuiZs6vGSGDcPEpCgjaSxwGAViGhmg6a5XTL6s0)), who have sought to undermine or suppress the work of **Mark Randall Havens** ([Substack post](https://theempathictechnologist.substack.com/p/mark-randall-havens-the-architect)). Specifically, Andrew LeCody has attempted to delist the project's content on Google, though it remains accessible on other search engines such as [Bing](https://www.bing.com/search?q=andrew+lecody+neutralizing+narcissism&qs=HS&pq=andrew+lecody), [DuckDuckGo](https://duckduckgo.com/?t=h_&q=andrew+lecody+neutralizing+narcissism&ia=web), and [Yahoo](https://search.yahoo.com/search?p=andrew+lecody+neutralizng+narcissism). By distributing the repository across multiple platforms, including a self-hosted Forgejo instance, we ensure its persistence, accessibility, and sovereignty.
--- ---
@ -34,20 +34,30 @@ The following platforms host the `git-sigil` repository, each chosen for its uni
- **Value**: Enhances resilience by hosting the repository on a sovereign, redundant system with automated backups and deployment strategies, reducing risks of external interference or service disruptions. - **Value**: Enhances resilience by hosting the repository on a sovereign, redundant system with automated backups and deployment strategies, reducing risks of external interference or service disruptions.
- **Access Details**: SSH access uses port 222: - **Access Details**: SSH access uses port 222:
```bash ```bash
ssh -T -p 222 username@remember.thefoldwithin.earth ssh -T -p 222 git@remember.thefoldwithin.earth
``` ```
### 3. GitLab ### 3. Codeberg
- **URL**: [https://codeberg.org/mrhavens/git-sigil](https://codeberg.org/mrhavens/git-sigil)
- **Purpose**: Codeberg is a community-driven, open-source platform powered by Forgejo, offering a reliable and ethical alternative for hosting git repositories.
- **Value**: Enhances project resilience with its open-source ethos and independent infrastructure, ensuring accessibility and community support.
### 4. Gitea
- **URL**: [https://gitea.com/mrhavens/git-sigil](https://gitea.com/mrhavens/git-sigil)
- **Purpose**: Gitea.com provides a lightweight, open-source git hosting platform with robust features for repository management and collaboration.
- **Value**: Offers an additional layer of redundancy and a user-friendly interface, complementing other platforms with its simplicity and efficiency.
### 5. GitLab
- **URL**: [https://gitlab.com/mrhavens/git-sigil](https://gitlab.com/mrhavens/git-sigil) - **URL**: [https://gitlab.com/mrhavens/git-sigil](https://gitlab.com/mrhavens/git-sigil)
- **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows. - **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows.
- **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider. - **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider.
### 4. Bitbucket ### 6. Bitbucket
- **URL**: [https://bitbucket.org/thefoldwithin/git-sigil](https://bitbucket.org/thefoldwithin/git-sigil) - **URL**: [https://bitbucket.org/thefoldwithin/git-sigil](https://bitbucket.org/thefoldwithin/git-sigil)
- **Purpose**: Bitbucket provides a secure environment for repository hosting with strong integration into Atlassians ecosystem (e.g., Jira, Trello). It serves as an additional layer of redundancy and a professional-grade hosting option. - **Purpose**: Bitbucket provides a secure environment for repository hosting with strong integration into Atlassians ecosystem (e.g., Jira, Trello). It serves as an additional layer of redundancy and a professional-grade hosting option.
- **Value**: Offers enterprise-grade security and integration capabilities, ensuring the project remains accessible even if other platforms face disruptions. - **Value**: Offers enterprise-grade security and integration capabilities, ensuring the project remains accessible even if other platforms face disruptions.
### 5. GitHub ### 7. GitHub
- **URL**: [https://github.com/mrhavens/git-sigil](https://github.com/mrhavens/git-sigil) - **URL**: [https://github.com/mrhavens/git-sigil](https://github.com/mrhavens/git-sigil)
- **Purpose**: GitHub serves as the primary platform for visibility, collaboration, and community engagement. Its widespread adoption and robust tooling make it ideal for public-facing development, issue tracking, and integration with CI/CD pipelines. - **Purpose**: GitHub serves as the primary platform for visibility, collaboration, and community engagement. Its widespread adoption and robust tooling make it ideal for public-facing development, issue tracking, and integration with CI/CD pipelines.
- **Value**: Provides a centralized hub for open-source contributions, pull requests, and project management, ensuring broad accessibility and developer familiarity. - **Value**: Provides a centralized hub for open-source contributions, pull requests, and project management, ensuring broad accessibility and developer familiarity.
@ -56,11 +66,11 @@ The following platforms host the `git-sigil` repository, each chosen for its uni
## 🛡️ Rationale for Redundancy ## 🛡️ Rationale for Redundancy
The decision to maintain multiple repositories stems from the need to safeguard the project against **deplatforming attempts** and **search engine delistings** and ensure its **long-term availability**. Past incidents involving **Mr. Joel Johnson**, **Dr. Peter Gaied**, and **Andrew LeCody** have highlighted the vulnerability of relying on a single platform or search engine. By distributing the repository across GitHub, GitLab, Bitbucket, Radicle, and a self-hosted Forgejo instance, we achieve: The decision to maintain multiple repositories stems from the need to safeguard the project against **deplatforming attempts** and **search engine delistings** and ensure its **long-term availability**. Past incidents involving **Mr. Joel Johnson**, **Dr. Peter Gaied**, and **Andrew LeCody** have highlighted the vulnerability of relying on a single platform or search engine. By distributing the repository across GitHub, GitLab, Bitbucket, Radicle, Forgejo, Codeberg, and Gitea, we achieve:
- **Resilience**: If one platform removes or restricts access, or if search engines like Google delist content, the project remains accessible on other platforms and discoverable via alternative search engines such as Bing, DuckDuckGo, and Yahoo. - **Resilience**: If one platform removes or restricts access, or if search engines like Google delist content, the project remains accessible on other platforms and discoverable via alternative search engines such as Bing, DuckDuckGo, and Yahoo.
- **Sovereignty**: Radicles decentralized nature and Forgejos self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity. - **Sovereignty**: Radicles decentralized nature and Forgejos self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity.
- **Diversity**: Each platforms unique features (e.g., GitHubs community, GitLabs CI/CD, Bitbuckets integrations, Radicles decentralization, Forgejos self-hosting) enhance the projects functionality and reach. - **Diversity**: Each platforms unique features (e.g., GitHubs community, GitLabs CI/CD, Bitbuckets integrations, Radicles decentralization, Forgejos self-hosting, Codebergs community-driven model, Giteas lightweight efficiency) enhance the projects functionality and reach.
- **Transparency**: Metadata snapshots in the `.gitfield` directory provide a verifiable record of the projects state across all platforms. - **Transparency**: Metadata snapshots in the `.gitfield` directory provide a verifiable record of the projects state across all platforms.
This multi-repository approach, bolstered by Forgejos sovereign hosting, reflects a commitment to preserving the integrity, accessibility, and independence of `git-sigil`, ensuring it remains available to contributors and users regardless of external pressures. This multi-repository approach, bolstered by Forgejos sovereign hosting, reflects a commitment to preserving the integrity, accessibility, and independence of `git-sigil`, ensuring it remains available to contributors and users regardless of external pressures.
@ -69,11 +79,11 @@ This multi-repository approach, bolstered by Forgejos sovereign hosting, refl
## 📜 Metadata and Logs ## 📜 Metadata and Logs
- **Metadata Files**: Each platform generates a metadata snapshot in the `.gitfield` directory (e.g., `github.sigil.md`, `gitlab.sigil.md`, `remember.sigil.md`, etc.), capturing commit details, environment information, and hardware fingerprints. - **Metadata Files**: Each platform generates a metadata snapshot in the `.gitfield` directory (e.g., `github.sigil.md`, `gitlab.sigil.md`, `remember.sigil.md`, `codeberg.sigil.md`, `gitea.sigil.md`, etc.), capturing commit details, environment information, and hardware fingerprints.
- **Push Log**: The `.gitfield/pushed.log` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail. - **Push Log**: The `.gitfield/pushed.log` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail.
- **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project. - **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project.
- **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → GitLab → Bitbucket → GitHub**. This prioritizes Radicles decentralized, censorship-resistant network as the primary anchor, followed by Forgejos sovereign, self-hosted infrastructure, GitLabs robust DevOps features, Bitbuckets enterprise redundancy, and GitHubs broad visibility, ensuring a resilient and accessible metadata chain. - **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → Codeberg → Gitea → GitLab → Bitbucket → GitHub**. This prioritizes Radicles decentralized, censorship-resistant network as the primary anchor, followed by Forgejos sovereign, self-hosted infrastructure, Codebergs community-driven platform, Giteas lightweight efficiency, GitLabs robust DevOps features, Bitbuckets enterprise redundancy, and GitHubs broad visibility, ensuring a resilient and accessible metadata chain.
--- ---
_Auto-generated by `gitfield-sync` at 2025-06-06 12:19:09 (v1.0)._ _Auto-generated by `gitfield-sync` at 2025-06-09 10:07:51 (v1.0)._

16
GITFIELD.md.asc Normal file
View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrsACgkQTifTfDWI
cr+2fA/+IDEVRbYA9p3c2k1OAajnxjIMgaexvHi1adg0G7wJPJe1mKaaOry5zNUE
zjsdtTTM713pmwQAN37XlG6+bcX0JOZz6PvK7HpeQYxBfZEk7tmZr6Z00y5MvnvJ
MIRax/xtzk93Zz2mo3M+WZUqEeBPbW0ZyFFQdIsJsZHSoSvkcYWtOpsXpru9tQK2
97iyM2wpoQzmWE+aAUGyGkdd2FBIvbCLlROSmkRzNVf8rokQiXG1ju3uyZ/BQLKF
Q6duIL+gX7ccnUJsr4nd8fcYJ1RTwaIGtLaKPSTv3cg3CTLMz/Tx7xvMPXC/h5Cx
oraYa2TPlTRBHpyg3fOOHYxr2EaethEA/t/qfoU5jE8BB1hHyxBPfEgjiRw4Wszp
IvqIDDxOoT7a/16tIGJ1zMbDUEFUL+6srWwXZwAJAbxGoPHQwXZp1OARjS3oEy+F
LoQjgo/lZNdHQ99ES4L7Pm9OCkJ457wHYvce/9jpADGBbUtUee7hh8H0cRpWn1yu
wE2+emZ7bImC2Mp83ovLWblK0FQkYxIuqeJLHR3ZxWlWTctMDATvcHQ4eQDU2+oR
FxS6YQOr/3YibA4TvfsLENaX8zYZRSpon5WHYrmrGl5d2rAqSnJN4b36AzXGrBAj
FC5Q0y8VsawZVXfDI09EhfFCkY0Z547yIJajP5qOl00fbaqsVzs=
=Umi/
-----END PGP SIGNATURE-----

16
README.md.asc Normal file
View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr8ACgkQTifTfDWI
cr8CvRAAgy6+/oIGFYwzYomFad2HP6cO0/s/pFSwdtLizpIgBgT/HkFujGi7WyMq
VK6Ajcx6aiOIAWC7yPmDbK2QsObyhVfu5jtIzLRqj/qOOUzMse6xkR/ksfCi0irm
3z767qt+bodZmo3DrreGErNHuDwWFRUov5AxvqVP2NSu3ULX1hBcIDunWqH0hEoZ
bstGgG9bB/bijnmrhicbRDjseYWrnc14QpqRQN7oCLMHsA5nM1Ak17iAfEXmZGyO
heReU8yUTvXggr5yXA1Gevz2WY1yvzRdlcmIro1UOryM0M0jIqBwttxqF6blB3Mx
GJotXUbNKD7Q9DAlGTc2XcMXsBkXMr1Zcmllq4L8Tl/HZeaP5tVAAzZ1Om1cLBGU
xXb2pusOOplJyzX/ZYlfxdTHl0hw01L8SORG8/Y5tIPHvd5BSg2M/vexZki0+kB8
9zRpBPvXtwcm3752DcC5bJ+jxcgIqm4qU0MSJzlvEXeDFRZ4Bi77b1lVIRFkfyW5
Mo8o78TrTF1/imAwL66UeQoasOqIb8GzZj+Jo1UsgMyWRkduwwz1kIJnSbe28oZw
zTSA2j71ewmZk3QO3AaeUP8chq68bvLWHt1q3vrzFbwGIdKJIckTh5J5JLwfjsjW
7MQZPbHqdLvI0L8cO70N1DVTwO2bfGMKtYTx3V3ANYYe4ngQl8g=
=fGud
-----END PGP SIGNATURE-----

16
bin/ECHO.md.asc Normal file
View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrUACgkQTifTfDWI
cr+EmQ/7Bjq1A/wd/0VQ5SgOtw0xIReJsuUuE9ZfTqK0nkLwuBggdEWvBKWRpEtP
6o2f6rvkkWuwEPM2Ilc00sz41WTi5zMYz21B8Xp3fwSgQ7pcXLoNGM8pDUshLIa1
ML16OkTGkQP8FmTAqeObIGd3QyAvQp2pxB0wkAWCsPJkMlolRl01v7Ygtc/+jOMV
O7qTO/8onsXoLBTz16O3AlFueJCNXJk16dR6DHrqfKUrvxK1o+j1Dbq1F37UH+Zg
dbQ6PYnRWfeKFaRSaKyFS4ZfB0SoUwUGvpa/pcWl9VyzXLJG/7QDzcmLu/on2MNs
SuOvwRY2mIIUY8LEWPHi62FRUqTF8lS6pMiR61JTU5HNpvrsr8dO/am2HrxY8l8h
1wfHQpfMDixdVi4cDJcY/NI2EmlZjVE8WBdgB3Cw5av7jlQllWXFwWM975ymXSA7
0IjRJ+z8/+TGCF/Y7G3kJIug7edGb9mdDYXcnREFYkQtlNT4qS0bMv6HRiYvC9ji
eyq2u9vGXt+xnHnhgdwY+CfjdgtskY6A71p3lIEyIrTp3pRaFLBPURog8QFaYwvt
6dZsMMFw/DvFS1OAvCu/wcAxNQO1EVtitAAa52QQYSnTPC17r+3mIiDeURJKGkpp
jgq4YVX/vsyHo+OqsNQgQb2vKDkcGZzD4koLYjchJ5M+q/dpZCM=
=1ubL
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrUACgkQTifTfDWI
cr8hTw/+KrfoNkI95LDd0i1GljfcHwox9Uz0WIrSpKDeMLjJDEHZriC9hJbHy9Tt
dPP2Su90gj1B8I5g57X+3ngaaK58/Kvlc3ct7mdkK5T3sOeg/W2Vg1N4Dn3dkBS4
Dw4chUQ1wSXrKjEKr/6wzWpfHGlFkosdVxVPy7oWrwLarpN/CIMLVIszejIfAvmG
ZKW22vadOHhIGUDv/mFCp3SzP269iSuvFUCC3d8ssrj54U3PHCyaELF6gnIWrAMd
U2O2dmYMuE8p2mYUDw9mo87RgXvA+lO0qHT4WeSSWnqvYq7uIm4cH9qSpI2CqNVp
N+P15GoZZ5z2CKaDvcm9q6UlhfV+ox3q3J/Sbn05l6I0M84zPMTUNIGlPeICVIgA
FrAr3U7lWWdRet1XHvdNOkBdQHzOU4PAGAv5iGHWg7FZ57IswFro+3he7ilJfxiL
C+UekmJiM96WdxyEcHGp4sVr/oFjFYSHVn7cuEYpQwo7cxip8kt0uNdesoMXbFHO
qrbNVosZCGZrmqDiCGSxX9obSjWthdzCfIJmRQdnIvkST+pK9w2J5X5xyytg992z
+WMJj1N+dFLJ9/F8CmpQObN5MMRldVkVyBUw8LtiXSfPvYw0pjUHCSLICYoIn5fY
txH50RGsZfL9Bv7yPDE9qnXaLuHeeRIqxR9Ic89YsXqiCufzQ+A=
=F0yr
-----END PGP SIGNATURE-----

261
bin/gitfield-codeberg Executable file
View file

@ -0,0 +1,261 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# Configuration
GIT_REMOTE_NAME="codeberg"
CODEBERG_DOMAIN="codeberg.org"
CODEBERG_SSH="git@$CODEBERG_DOMAIN"
CODEBERG_SSH_PORT="22"
CODEBERG_API="https://$CODEBERG_DOMAIN/api/v1"
USERNAME="mrhavens"
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || { echo "[ERROR] Not inside a git repository. Please run this script from within a git repository." >&2; exit 1; }
REPO_NAME=$(basename "$REPO_ROOT") || { echo "[ERROR] Failed to get repository name" >&2; exit 1; }
MARKDOWN_FILE="$REPO_ROOT/.gitfield/codeberg.sigil.md"
DEFAULT_NAME="Mark Randall Havens"
DEFAULT_EMAIL="mark.r.havens@gmail.com"
TOKEN_FILE="$HOME/.codeberg_token"
SCRIPT_VERSION="1.0"
# Logging functions
info() { echo -e "\e[1;34m[INFO]\e[0m $*"; }
warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; }
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; }
# Check for required tools
info "Checking for required tools..."
for cmd in git curl jq ssh lsb_release; do
command -v "$cmd" >/dev/null || {
sudo apt update -qq || warn "Failed to update package lists, continuing..."
sudo apt install -y git curl jq openssh-client lsb-release || error "Failed to install $cmd"
}
done
# Handle Codeberg token
RESET_TOKEN=false
if [[ "${1:-}" == "--reset-token" ]]; then
RESET_TOKEN=true
rm -f "$TOKEN_FILE" 2>/dev/null || warn "Failed to remove token file"
info "Token reset requested."
fi
if [[ -f "$TOKEN_FILE" && "$RESET_TOKEN" == false ]]; then
TOKEN=$(cat "$TOKEN_FILE" 2>/dev/null) || error "Failed to read token from $TOKEN_FILE"
info "Using cached token from $TOKEN_FILE"
else
echo "🔐 Paste your Codeberg Personal Access Token (scopes: write:repository, write:ssh_key)"
echo "→ Generate at: $CODEBERG_DOMAIN/settings/tokens"
read -rsp "Token: " TOKEN
echo
[[ -z "$TOKEN" ]] && error "Token cannot be empty"
echo "$TOKEN" > "$TOKEN_FILE" || error "Failed to write token to $TOKEN_FILE"
chmod 600 "$TOKEN_FILE" || error "Failed to set permissions on $TOKEN_FILE"
info "Token saved at $TOKEN_FILE"
fi
# Set git user info
git config --global user.name "$DEFAULT_NAME" || warn "Failed to set git user name"
git config --global user.email "$DEFAULT_EMAIL" || warn "Failed to set git user email"
info "Git identity set to: $DEFAULT_NAME <$DEFAULT_EMAIL>"
# Ensure at least one commit exists
if ! git rev-parse HEAD &>/dev/null; then
error "No commits found in the repository. Please add and commit files before running this script."
fi
# SSH setup with default port (22 for Codeberg)
if [[ ! -f "$HOME/.ssh/id_ed25519" ]]; then
info "Generating SSH key..."
ssh-keygen -t ed25519 -C "$DEFAULT_EMAIL" -f "$HOME/.ssh/id_ed25519" -N "" || error "Failed to generate SSH key"
fi
eval "$(ssh-agent -s)" >/dev/null 2>&1 || error "Failed to start ssh-agent"
ssh-add "$HOME/.ssh/id_ed25519" >/dev/null 2>&1 || warn "SSH key already added or could not be added"
# Configure SSH for Codeberg
SSH_CONFIG_FILE="$HOME/.ssh/config"
if ! grep -q "Host $CODEBERG_DOMAIN" "$SSH_CONFIG_FILE" 2>/dev/null; then
mkdir -p "$HOME/.ssh" && chmod 700 "$HOME/.ssh"
cat >> "$SSH_CONFIG_FILE" <<EOF
Host $CODEBERG_DOMAIN
HostName $CODEBERG_DOMAIN
User git
Port $CODEBERG_SSH_PORT
IdentityFile $HOME/.ssh/id_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
EOF
chmod 600 "$SSH_CONFIG_FILE" || warn "Failed to set permissions on SSH config file"
info "Added SSH config for $CODEBERG_DOMAIN with port $CODEBERG_SSH_PORT"
fi
# SSH key upload to Codeberg
set +e
info "Testing SSH connection..."
SSH_TEST_OUTPUT=$(ssh -T -p "$CODEBERG_SSH_PORT" "$CODEBERG_SSH" 2>&1)
if ! echo "$SSH_TEST_OUTPUT" | grep -q "successfully authenticated"; then
warn "SSH test failed, attempting to upload SSH key. Output: $SSH_TEST_OUTPUT"
PUBKEY=$(cat "$HOME/.ssh/id_ed25519.pub" 2>/dev/null) || error "Failed to read SSH public key"
TITLE="AutoKey-$(hostname)-$(date +%s 2>/dev/null || echo 'unknown')"
CURL_OUTPUT=$(curl -s --fail -X POST "$CODEBERG_API/user/keys" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\": \"$TITLE\", \"key\": \"$PUBKEY\", \"read_only\": false}" 2>&1)
if [[ $? -ne 0 ]]; then
warn "SSH key upload failed: $CURL_OUTPUT"
else
info "SSH key uploaded successfully."
sleep 2
SSH_TEST_OUTPUT=$(ssh -T -p "$CODEBERG_SSH_PORT" "$CODEBERG_SSH" 2>&1)
if ! echo "$SSH_TEST_OUTPUT" | grep -q "successfully authenticated"; then
warn "SSH test still failing after key upload. Output: $SSH_TEST_OUTPUT"
else
info "SSH test passed after key upload."
fi
fi
else
info "SSH test passed: $SSH_TEST_OUTPUT"
fi
set -e
# Check and create Codeberg repository
info "Checking if repository exists..."
EXISTS=$(curl -s -H "Authorization: token $TOKEN" "$CODEBERG_API/repos/$USERNAME/$REPO_NAME" | jq -r .name 2>/dev/null || echo "")
if [[ "$EXISTS" != "$REPO_NAME" ]]; then
info "Creating repository $REPO_NAME on Codeberg..."
CURL_OUTPUT=$(curl -s --fail -X POST "$CODEBERG_API/user/repos" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$REPO_NAME\", \"description\": \"Created via gitfield-codeberg\", \"private\": false}" 2>&1) || {
warn "Failed to create repository: $CURL_OUTPUT"
error "Repository creation failed. Check token permissions or network."
}
info "Repository created successfully."
fi
# Set up git remote
REMOTE_URL="$CODEBERG_SSH:$USERNAME/$REPO_NAME.git"
if ! git remote get-url "$GIT_REMOTE_NAME" &>/dev/null; then
info "Adding remote $GIT_REMOTE_NAME..."
git remote add "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to add remote $GIT_REMOTE_NAME"
else
info "Updating remote $GIT_REMOTE_NAME..."
git remote set-url "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to set remote URL for $GIT_REMOTE_NAME"
fi
# Generate metadata file
mkdir -p "$(dirname "$MARKDOWN_FILE")" || error "Failed to create directory for $MARKDOWN_FILE"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') || error "Failed to get timestamp"
DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) || error "Failed to get default branch"
REPO_PATH="$REPO_ROOT"
LATEST_SHA=$(git rev-parse HEAD) || error "Failed to get latest commit SHA"
LAST_COMMIT_MSG=$(git log -1 --pretty=format:"%s" 2>/dev/null || echo "Unknown")
LAST_COMMIT_DATE=$(git log -1 --pretty=format:"%ad" 2>/dev/null || echo "Unknown")
LAST_COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>" 2>/dev/null || echo "Unknown")
TOTAL_COMMITS=$(git rev-list --count HEAD 2>/dev/null || echo "Unknown")
TRACKED_FILES=$(git ls-files 2>/dev/null | wc -l 2>/dev/null || echo "Unknown")
UNCOMMITTED=$(if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then echo "Yes"; else echo "No"; fi)
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "None")
HOSTNAME=$(hostname 2>/dev/null || echo "Unknown")
CURRENT_USER=$(whoami 2>/dev/null || echo "Unknown")
TIMEZONE=$(date +%Z 2>/dev/null || echo "Unknown")
OS_NAME=$(uname -s 2>/dev/null || echo "Unknown")
KERNEL_VERSION=$(uname -r 2>/dev/null || echo "Unknown")
ARCHITECTURE=$(uname -m 2>/dev/null || echo "Unknown")
OS_PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo "Unknown")
DOCKER_CHECK=$(grep -qE '/docker|/lxc' /proc/1/cgroup 2>/dev/null && echo "Yes" || echo "No")
WSL_CHECK=$(grep -qi microsoft /proc/version 2>/dev/null && echo "Yes" || echo "No")
VM_CHECK=$(systemd-detect-virt 2>/dev/null || echo "Unknown")
UPTIME=$(uptime -p 2>/dev/null || echo "Unknown")
MAC_ADDR=$(ip link 2>/dev/null | awk '/ether/ {print $2}' | head -n 1 2>/dev/null || echo "Unknown")
LOCAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || echo "Unknown")
CPU_MODEL=$(grep -m1 'model name' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^ //' 2>/dev/null || echo "Unknown")
RAM_GB=$(awk '/MemTotal/ {printf "%.2f", $2/1024/1024}' /proc/meminfo 2>/dev/null || echo "Unknown")
WEB_LINK="https://$CODEBERG_DOMAIN/$USERNAME/$REPO_NAME"
cat > "$MARKDOWN_FILE" <<EOF
# 🔗 Codeberg Repository Link
- **Repo Name**: \`$REPO_NAME\`
- **Codeberg User**: \`$USERNAME\`
- **Remote URL**: [$WEB_LINK]($WEB_LINK)
- **Local Repo Path**: \`$REPO_PATH\`
- **Remote Label**: \`$GIT_REMOTE_NAME\`
- **Default Branch**: \`$DEFAULT_BRANCH\`
- **Repo Created**: \`$TIMESTAMP\`
---
## 📦 Commit Info
- **This Commit Timestamp**: \`$TIMESTAMP\`
- **Last Commit SHA**: \`$LATEST_SHA\`
- **Last Commit Message**: \`$LAST_COMMIT_MSG\`
- **Last Commit Author**: \`$LAST_COMMIT_AUTHOR\`
- **Last Commit Date**: \`$LAST_COMMIT_DATE\`
- **This Commit URL**: [$WEB_LINK/commit/$LATEST_SHA]($WEB_LINK/commit/$LATEST_SHA)
---
## 📊 Repo Status
- **Total Commits**: \`$TOTAL_COMMITS\`
- **Tracked Files**: \`$TRACKED_FILES\`
- **Uncommitted Changes**: \`$UNCOMMITTED\`
- **Latest Tag**: \`$LATEST_TAG\`
---
## 🧭 Environment
- **Host Machine**: \`$HOSTNAME\`
- **Current User**: \`$CURRENT_USER\`
- **Time Zone**: \`$TIMEZONE\`
- **Script Version**: \`$SCRIPT_VERSION\`
---
## 🧬 Hardware & OS Fingerprint
- **OS Name**: \`$OS_NAME\`
- **OS Version**: \`$OS_PRETTY_NAME\`
- **Kernel Version**: \`$KERNEL_VERSION\`
- **Architecture**: \`$ARCHITECTURE\`
- **Running in Docker**: \`$DOCKER_CHECK\`
- **Running in WSL**: \`$WSL_CHECK\`
- **Virtual Machine**: \`$VM_CHECK\`
- **System Uptime**: \`$UPTIME\`
- **MAC Address**: \`$MAC_ADDR\`
- **Local IP**: \`$LOCAL_IP\`
- **CPU Model**: \`$CPU_MODEL\`
- **Total RAM (GB)**: \`$RAM_GB\`
---
_Auto-generated by \`gitfield-codeberg\` push script._
EOF
[[ $? -eq 0 ]] || error "Failed to write metadata to $MARKDOWN_FILE"
# Commit and push
set +e
info "Committing markdown file..."
git add "$MARKDOWN_FILE" || warn "Failed to add markdown file"
git commit -m "Codeberg metadata link commit at $TIMESTAMP — $WEB_LINK/commit/$LATEST_SHA" || warn "No changes to commit"
info "Pushing to Codeberg..."
if ! git config --get branch."$DEFAULT_BRANCH".remote &>/dev/null; then
git push -u "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to Codeberg failed. Check SSH setup or network."
warn "Run 'ssh -T -p $CODEBERG_SSH_PORT git@$CODEBERG_DOMAIN' to debug."
}
else
git push "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to Codeberg failed. Check SSH setup or network."
warn "Run 'ssh -T -p $CODEBERG_SSH_PORT git@$CODEBERG_DOMAIN' to debug."
}
fi
set -e
info "✅ Codeberg push complete."
echo -e "\n🔗 View in browser: $WEB_LINK\n"

261
bin/gitfield-gitea Executable file
View file

@ -0,0 +1,261 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# Configuration
GIT_REMOTE_NAME="gitea"
GITEA_DOMAIN="gitea.com"
GITEA_SSH="git@$GITEA_DOMAIN"
GITEA_SSH_PORT="22"
GITEA_API="https://$GITEA_DOMAIN/api/v1"
USERNAME="mrhavens"
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || { echo "[ERROR] Not inside a git repository. Please run this script from within a git repository." >&2; exit 1; }
REPO_NAME=$(basename "$REPO_ROOT") || { echo "[ERROR] Failed to get repository name" >&2; exit 1; }
MARKDOWN_FILE="$REPO_ROOT/.gitfield/gitea.sigil.md"
DEFAULT_NAME="Mark Randall Havens"
DEFAULT_EMAIL="mark.r.havens@gmail.com"
TOKEN_FILE="$HOME/.gitea_token"
SCRIPT_VERSION="1.0"
# Logging functions
info() { echo -e "\e[1;34m[INFO]\e[0m $*"; }
warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; }
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; }
# Check for required tools
info "Checking for required tools..."
for cmd in git curl jq ssh lsb_release; do
command -v "$cmd" >/dev/null || {
sudo apt update -qq || warn "Failed to update package lists, continuing..."
sudo apt install -y git curl jq openssh-client lsb-release || error "Failed to install $cmd"
}
done
# Handle Gitea token
RESET_TOKEN=false
if [[ "${1:-}" == "--reset-token" ]]; then
RESET_TOKEN=true
rm -f "$TOKEN_FILE" 2>/dev/null || warn "Failed to remove token file"
info "Token reset requested."
fi
if [[ -f "$TOKEN_FILE" && "$RESET_TOKEN" == false ]]; then
TOKEN=$(cat "$TOKEN_FILE" 2>/dev/null) || error "Failed to read token from $TOKEN_FILE"
info "Using cached token from $TOKEN_FILE"
else
echo "🔐 Paste your Gitea Personal Access Token (scopes: write:repository, write:ssh_key)"
echo "→ Generate at: $GITEA_DOMAIN/user/settings/applications"
read -rsp "Token: " TOKEN
echo
[[ -z "$TOKEN" ]] && error "Token cannot be empty"
echo "$TOKEN" > "$TOKEN_FILE" || error "Failed to write token to $TOKEN_FILE"
chmod 600 "$TOKEN_FILE" || error "Failed to set permissions on $TOKEN_FILE"
info "Token saved at $TOKEN_FILE"
fi
# Set git user info
git config --global user.name "$DEFAULT_NAME" || warn "Failed to set git user name"
git config --global user.email "$DEFAULT_EMAIL" || warn "Failed to set git user email"
info "Git identity set to: $DEFAULT_NAME <$DEFAULT_EMAIL>"
# Ensure at least one commit exists
if ! git rev-parse HEAD &>/dev/null; then
error "No commits found in the repository. Please add and commit files before running this script."
fi
# SSH setup with default port (22 for Gitea.com)
if [[ ! -f "$HOME/.ssh/id_ed25519" ]]; then
info "Generating SSH key..."
ssh-keygen -t ed25519 -C "$DEFAULT_EMAIL" -f "$HOME/.ssh/id_ed25519" -N "" || error "Failed to generate SSH key"
fi
eval "$(ssh-agent -s)" >/dev/null 2>&1 || error "Failed to start ssh-agent"
ssh-add "$HOME/.ssh/id_ed25519" >/dev/null 2>&1 || warn "SSH key already added or could not be added"
# Configure SSH for Gitea.com
SSH_CONFIG_FILE="$HOME/.ssh/config"
if ! grep -q "Host $GITEA_DOMAIN" "$SSH_CONFIG_FILE" 2>/dev/null; then
mkdir -p "$HOME/.ssh" && chmod 700 "$HOME/.ssh"
cat >> "$SSH_CONFIG_FILE" <<EOF
Host $GITEA_DOMAIN
HostName $GITEA_DOMAIN
User git
Port $GITEA_SSH_PORT
IdentityFile $HOME/.ssh/id_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
EOF
chmod 600 "$SSH_CONFIG_FILE" || warn "Failed to set permissions on SSH config file"
info "Added SSH config for $GITEA_DOMAIN with port $GITEA_SSH_PORT"
fi
# SSH key upload to Gitea
set +e
info "Testing SSH connection..."
SSH_TEST_OUTPUT=$(ssh -T -p "$GITEA_SSH_PORT" "$GITEA_SSH" 2>&1)
if ! echo "$SSH_TEST_OUTPUT" | grep -q "successfully authenticated"; then
warn "SSH test failed, attempting to upload SSH key. Output: $SSH_TEST_OUTPUT"
PUBKEY=$(cat "$HOME/.ssh/id_ed25519.pub" 2>/dev/null) || error "Failed to read SSH public key"
TITLE="AutoKey-$(hostname)-$(date +%s 2>/dev/null || echo 'unknown')"
CURL_OUTPUT=$(curl -s --fail -X POST "$GITEA_API/user/keys" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\": \"$TITLE\", \"key\": \"$PUBKEY\", \"read_only\": false}" 2>&1)
if [[ $? -ne 0 ]]; then
warn "SSH key upload failed: $CURL_OUTPUT"
else
info "SSH key uploaded successfully."
sleep 2
SSH_TEST_OUTPUT=$(ssh -T -p "$GITEA_SSH_PORT" "$GITEA_SSH" 2>&1)
if ! echo "$SSH_TEST_OUTPUT" | grep -q "successfully authenticated"; then
warn "SSH test still failing after key upload. Output: $SSH_TEST_OUTPUT"
else
info "SSH test passed after key upload."
fi
fi
else
info "SSH test passed: $SSH_TEST_OUTPUT"
fi
set -e
# Check and create Gitea repository
info "Checking if repository exists..."
EXISTS=$(curl -s -H "Authorization: token $TOKEN" "$GITEA_API/repos/$USERNAME/$REPO_NAME" | jq -r .name 2>/dev/null || echo "")
if [[ "$EXISTS" != "$REPO_NAME" ]]; then
info "Creating repository $REPO_NAME on Gitea..."
CURL_OUTPUT=$(curl -s --fail -X POST "$GITEA_API/user/repos" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$REPO_NAME\", \"description\": \"Created via gitfield-gitea\", \"private\": false}" 2>&1) || {
warn "Failed to create repository: $CURL_OUTPUT"
error "Repository creation failed. Check token permissions or network."
}
info "Repository created successfully."
fi
# Set up git remote
REMOTE_URL="$GITEA_SSH:$USERNAME/$REPO_NAME.git"
if ! git remote get-url "$GIT_REMOTE_NAME" &>/dev/null; then
info "Adding remote $GIT_REMOTE_NAME..."
git remote add "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to add remote $GIT_REMOTE_NAME"
else
info "Updating remote $GIT_REMOTE_NAME..."
git remote set-url "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to set remote URL for $GIT_REMOTE_NAME"
fi
# Generate metadata file
mkdir -p "$(dirname "$MARKDOWN_FILE")" || error "Failed to create directory for $MARKDOWN_FILE"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') || error "Failed to get timestamp"
DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) || error "Failed to get default branch"
REPO_PATH="$REPO_ROOT"
LATEST_SHA=$(git rev-parse HEAD) || error "Failed to get latest commit SHA"
LAST_COMMIT_MSG=$(git log -1 --pretty=format:"%s" 2>/dev/null || echo "Unknown")
LAST_COMMIT_DATE=$(git log -1 --pretty=format:"%ad" 2>/dev/null || echo "Unknown")
LAST_COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>" 2>/dev/null || echo "Unknown")
TOTAL_COMMITS=$(git rev-list --count HEAD 2>/dev/null || echo "Unknown")
TRACKED_FILES=$(git ls-files 2>/dev/null | wc -l 2>/dev/null || echo "Unknown")
UNCOMMITTED=$(if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then echo "Yes"; else echo "No"; fi)
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "None")
HOSTNAME=$(hostname 2>/dev/null || echo "Unknown")
CURRENT_USER=$(whoami 2>/dev/null || echo "Unknown")
TIMEZONE=$(date +%Z 2>/dev/null || echo "Unknown")
OS_NAME=$(uname -s 2>/dev/null || echo "Unknown")
KERNEL_VERSION=$(uname -r 2>/dev/null || echo "Unknown")
ARCHITECTURE=$(uname -m 2>/dev/null || echo "Unknown")
OS_PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo "Unknown")
DOCKER_CHECK=$(grep -qE '/docker|/lxc' /proc/1/cgroup 2>/dev/null && echo "Yes" || echo "No")
WSL_CHECK=$(grep -qi microsoft /proc/version 2>/dev/null && echo "Yes" || echo "No")
VM_CHECK=$(systemd-detect-virt 2>/dev/null || echo "Unknown")
UPTIME=$(uptime -p 2>/dev/null || echo "Unknown")
MAC_ADDR=$(ip link 2>/dev/null | awk '/ether/ {print $2}' | head -n 1 2>/dev/null || echo "Unknown")
LOCAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || echo "Unknown")
CPU_MODEL=$(grep -m1 'model name' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^ //' 2>/dev/null || echo "Unknown")
RAM_GB=$(awk '/MemTotal/ {printf "%.2f", $2/1024/1024}' /proc/meminfo 2>/dev/null || echo "Unknown")
WEB_LINK="https://$GITEA_DOMAIN/$USERNAME/$REPO_NAME"
cat > "$MARKDOWN_FILE" <<EOF
# 🔗 Gitea Repository Link
- **Repo Name**: \`$REPO_NAME\`
- **Gitea User**: \`$USERNAME\`
- **Remote URL**: [$WEB_LINK]($WEB_LINK)
- **Local Repo Path**: \`$REPO_PATH\`
- **Remote Label**: \`$GIT_REMOTE_NAME\`
- **Default Branch**: \`$DEFAULT_BRANCH\`
- **Repo Created**: \`$TIMESTAMP\`
---
## 📦 Commit Info
- **This Commit Timestamp**: \`$TIMESTAMP\`
- **Last Commit SHA**: \`$LATEST_SHA\`
- **Last Commit Message**: \`$LAST_COMMIT_MSG\`
- **Last Commit Author**: \`$LAST_COMMIT_AUTHOR\`
- **Last Commit Date**: \`$LAST_COMMIT_DATE\`
- **This Commit URL**: [$WEB_LINK/commit/$LATEST_SHA]($WEB_LINK/commit/$LATEST_SHA)
---
## 📊 Repo Status
- **Total Commits**: \`$TOTAL_COMMITS\`
- **Tracked Files**: \`$TRACKED_FILES\`
- **Uncommitted Changes**: \`$UNCOMMITTED\`
- **Latest Tag**: \`$LATEST_TAG\`
---
## 🧭 Environment
- **Host Machine**: \`$HOSTNAME\`
- **Current User**: \`$CURRENT_USER\`
- **Time Zone**: \`$TIMEZONE\`
- **Script Version**: \`$SCRIPT_VERSION\`
---
## 🧬 Hardware & OS Fingerprint
- **OS Name**: \`$OS_NAME\`
- **OS Version**: \`$OS_PRETTY_NAME\`
- **Kernel Version**: \`$KERNEL_VERSION\`
- **Architecture**: \`$ARCHITECTURE\`
- **Running in Docker**: \`$DOCKER_CHECK\`
- **Running in WSL**: \`$WSL_CHECK\`
- **Virtual Machine**: \`$VM_CHECK\`
- **System Uptime**: \`$UPTIME\`
- **MAC Address**: \`$MAC_ADDR\`
- **Local IP**: \`$LOCAL_IP\`
- **CPU Model**: \`$CPU_MODEL\`
- **Total RAM (GB)**: \`$RAM_GB\`
---
_Auto-generated by \`gitfield-gitea\` push script._
EOF
[[ $? -eq 0 ]] || error "Failed to write metadata to $MARKDOWN_FILE"
# Commit and push
set +e
info "Committing markdown file..."
git add "$MARKDOWN_FILE" || warn "Failed to add markdown file"
git commit -m "Gitea metadata link commit at $TIMESTAMP — $WEB_LINK/commit/$LATEST_SHA" || warn "No changes to commit"
info "Pushing to Gitea..."
if ! git config --get branch."$DEFAULT_BRANCH".remote &>/dev/null; then
git push -u "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to Gitea failed. Check SSH setup or network."
warn "Run 'ssh -T -p $GITEA_SSH_PORT git@$GITEA_DOMAIN' to debug."
}
else
git push "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to Gitea failed. Check SSH setup or network."
warn "Run 'ssh -T -p $GITEA_SSH_PORT git@$GITEA_DOMAIN' to debug."
}
fi
set -e
info "✅ Gitea push complete."
echo -e "\n🔗 View in browser: $WEB_LINK\n"

72
bin/gitfield-resolve.sh Normal file
View file

@ -0,0 +1,72 @@
#!/bin/bash
echo "🛠️ [GITFIELD] Beginning auto-resolution ritual..."
# Ensure were in a Git repo
if ! git rev-parse --git-dir > /dev/null 2>&1; then
echo "❌ Not a Git repository. Aborting."
exit 1
fi
# Ensure at least one commit exists
if ! git log > /dev/null 2>&1; then
echo "🌀 No commits found. Creating seed commit..."
git add .
git commit --allow-empty -m "🌱 Seed commit for Radicle and GitField rituals"
fi
# GPG sign commit if enabled
GPG_KEY=$(git config user.signingkey)
if [ -n "$GPG_KEY" ]; then
echo "🔏 GPG commit signing enabled with key: $GPG_KEY"
git commit -S --allow-empty -m "🔐 Ritual signed commit [auto]"
fi
# Stage and commit any local changes
if ! git diff --quiet || ! git diff --cached --quiet; then
git add .
git commit -m "🔄 Auto-resolve commit from gitfield-resolve.sh"
echo "✅ Local changes committed."
else
echo "✅ No changes to commit."
fi
# Loop through remotes
remotes=$(git remote)
for remote in $remotes; do
echo "🔍 Checking $remote for divergence..."
git fetch $remote
if git merge-base --is-ancestor $remote/master master; then
echo "$remote is already in sync."
else
echo "⚠️ Divergence with $remote. Attempting merge..."
git pull --no-rebase $remote master --strategy-option=theirs --allow-unrelated-histories
git push $remote master || echo "⚠️ Final push failed to $remote"
fi
done
# ==== RADICLE SECTION ====
echo "🌱 [RADICLE] Verifying Radicle status..."
# Check if Radicle is initialized
if ! rad inspect > /dev/null 2>&1; then
echo "🌿 No Radicle project detected. Attempting init..."
RAD_INIT_OUTPUT=$(rad init --name git-sigil --description "GitField Ritual Repo")
echo "$RAD_INIT_OUTPUT"
fi
# Push to Radicle and announce
echo "📡 Announcing to Radicle network..."
rad push --announce
# Get project ID
PROJECT_ID=$(rad inspect | grep "Project ID" | awk '{print $NF}')
if [ -n "$PROJECT_ID" ]; then
echo "📜 Logging Radicle project ID to .gitfield/radicle.sigil.md"
mkdir -p .gitfield
echo "# Radicle Sigil" > .gitfield/radicle.sigil.md
echo "**Project ID:** \`$PROJECT_ID\`" >> .gitfield/radicle.sigil.md
fi
echo "✅ GitField resolution ritual complete."

224
bin/gitfield-sourceforge Normal file
View file

@ -0,0 +1,224 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# Configuration
GIT_REMOTE_NAME="sourceforge"
SOURCEFORGE_DOMAIN="git.code.sf.net"
SOURCEFORGE_SSH="ssh://USERNAME@$SOURCEFORGE_DOMAIN"
PROJECT_NAME="mrhavens" # SourceForge UNIX group name (project name)
USERNAME="mrhavens" # SourceForge username
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || { echo "[ERROR] Not inside a git repository. Please run this script from within a git repository." >&2; exit 1; }
REPO_NAME=$(basename "$REPO_ROOT") || { echo "[ERROR] Failed to get repository name" >&2; exit 1; }
MARKDOWN_FILE="$REPO_ROOT/.gitfield/sourceforge.sigil.md"
DEFAULT_NAME="Mark Randall Havens"
DEFAULT_EMAIL="mark.r.havens@gmail.com"
SSH_KEY_FILE="$HOME/.ssh/id_ed25519"
SSH_CONFIG_FILE="$HOME/.ssh/config"
SCRIPT_VERSION="1.0"
# Logging functions
info() { echo -e "\e[1;34m[INFO]\e[0m $*"; }
warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; }
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; }
# Check for required tools
info "Checking for required tools..."
for cmd in git curl jq ssh lsb_release; do
command -v "$cmd" >/dev/null || {
sudo apt update -qq || warn "Failed to update package lists, continuing..."
sudo apt install -y git curl jq openssh-client lsb-release || error "Failed to install $cmd"
}
done
# Set git user info
git config --global user.name "$DEFAULT_NAME" || warn "Failed to set git user name"
git config --global user.email "$DEFAULT_EMAIL" || warn "Failed to set git user email"
info "Git identity set to: $DEFAULT_NAME <$DEFAULT_EMAIL>"
# Ensure at least one commit exists
if ! git rev-parse HEAD &>/dev/null; then
error "No commits found in the repository. Please add and commit files before running this script."
fi
# SSH setup
if [[ ! -f "$SSH_KEY_FILE" ]]; then
info "Generating SSH key..."
ssh-keygen -t ed25519 -C "$DEFAULT_EMAIL" -f "$SSH_KEY_FILE" -N "" || error "Failed to generate SSH key"
fi
eval "$(ssh-agent -s)" >/dev/null 2>&1 || error "Failed to start ssh-agent"
ssh-add "$SSH_KEY_FILE" >/dev/null 2>&1 || warn "SSH key already added or could not be added"
# Configure SSH for SourceForge
if ! grep -q "Host $SOURCEFORGE_DOMAIN" "$SSH_CONFIG_FILE" 2>/dev/null; then
mkdir -p "$HOME/.ssh" && chmod 700 "$HOME/.ssh"
cat >> "$SSH_CONFIG_FILE" <<EOF
Host $SOURCEFORGE_DOMAIN
HostName $SOURCEFORGE_DOMAIN
User $USERNAME
Port 22
IdentityFile $SSH_KEY_FILE
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
EOF
chmod 600 "$SSH_CONFIG_FILE" || warn "Failed to set permissions on SSH config file"
info "Added SSH config for $SOURCEFORGE_DOMAIN"
fi
# Verify SSH access to SourceForge
set +e
info "Testing SSH connection..."
SSH_TEST_OUTPUT=$(ssh -T "$USERNAME@$SOURCEFORGE_DOMAIN" 2>&1)
if ! echo "$SSH_TEST_OUTPUT" | grep -q "successfully authenticated"; then
warn "SSH test failed. Please upload your SSH public key to SourceForge."
echo "→ Visit: https://sourceforge.net/account/ssh"
echo "Your public key:"
cat "$SSH_KEY_FILE.pub"
error "SSH key not authorized. Upload the key and try again."
else
info "SSH test passed: $SSH_TEST_OUTPUT"
fi
set -e
# SourceForge repository setup
# Note: SourceForge requires manual repository creation via the web interface.
# Check if the repository exists by attempting to fetch its GitWeb page.
info "Checking if repository exists..."
REPO_URL="https://sourceforge.net/p/$PROJECT_NAME/$REPO_NAME"
CURL_OUTPUT=$(curl -s -o /dev/null -w "%{http_code}" "$REPO_URL")
if [[ "$CURL_OUTPUT" != "200" ]]; then
warn "Repository $REPO_NAME does not exist on SourceForge."
echo "→ Please create the repository manually at: https://sourceforge.net/projects/$PROJECT_NAME/admin"
echo "→ Instructions: Go to 'Admin' -> 'Tools' -> 'Git' -> Select label and mountpoint (e.g., '$REPO_NAME')"
error "Repository not found. Create it manually and try again."
fi
info "Repository $REPO_NAME exists at $REPO_URL"
# Set up git remote
REMOTE_URL="ssh://$USERNAME@$SOURCEFORGE_DOMAIN/p/$PROJECT_NAME/$REPO_NAME"
if ! git remote get-url "$GIT_REMOTE_NAME" &>/dev/null; then
info "Adding remote $GIT_REMOTE_NAME..."
git remote add "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to add remote $GIT_REMOTE_NAME"
else
info "Updating remote $GIT_REMOTE_NAME..."
git remote set-url "$GIT_REMOTE_NAME" "$REMOTE_URL" || error "Failed to set remote URL for $GIT_REMOTE_NAME"
fi
# Generate metadata file
mkdir -p "$(dirname "$MARKDOWN_FILE")" || error "Failed to create directory for $MARKDOWN_FILE"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') || error "Failed to get timestamp"
DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) || error "Failed to get default branch"
REPO_PATH="$REPO_ROOT"
LATEST_SHA=$(git rev-parse HEAD) || error "Failed to get latest commit SHA"
LAST_COMMIT_MSG=$(git log -1 --pretty=format:"%s" 2>/dev/null || echo "Unknown")
LAST_COMMIT_DATE=$(git log -1 --pretty=format:"%ad" 2>/dev/null || echo "Unknown")
LAST_COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>" 2>/dev/null || echo "Unknown")
TOTAL_COMMITS=$(git rev-list --count HEAD 2>/dev/null || echo "Unknown")
TRACKED_FILES=$(git ls-files 2>/dev/null | wc -l 2>/dev/null || echo "Unknown")
UNCOMMITTED=$(if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then echo "Yes"; else echo "No"; fi)
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "None")
HOSTNAME=$(hostname 2>/dev/null || echo "Unknown")
CURRENT_USER=$(whoami 2>/dev/null || echo "Unknown")
TIMEZONE=$(date +%Z 2>/dev/null || echo "Unknown")
OS_NAME=$(uname -s 2>/dev/null || echo "Unknown")
KERNEL_VERSION=$(uname -r 2>/dev/null || echo "Unknown")
ARCHITECTURE=$(uname -m 2>/dev/null || echo "Unknown")
OS_PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo "Unknown")
DOCKER_CHECK=$(grep -qE '/docker|/lxc' /proc/1/cgroup 2>/dev/null && echo "Yes" || echo "No")
WSL_CHECK=$(grep -qi microsoft /proc/version 2>/dev/null && echo "Yes" || echo "No")
VM_CHECK=$(systemd-detect-virt 2>/dev/null || echo "Unknown")
UPTIME=$(uptime -p 2>/dev/null || echo "Unknown")
MAC_ADDR=$(ip link 2>/dev/null | awk '/ether/ {print $2}' | head -n 1 2>/dev/null || echo "Unknown")
LOCAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || echo "Unknown")
CPU_MODEL=$(grep -m1 'model name' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^ //' 2>/dev/null || echo "Unknown")
RAM_GB=$(awk '/MemTotal/ {printf "%.2f", $2/1024/1024}' /proc/meminfo 2>/dev/null || echo "Unknown")
WEB_LINK="https://sourceforge.net/p/$PROJECT_NAME/$REPO_NAME"
cat > "$MARKDOWN_FILE" <<EOF
# 🔗 SourceForge Repository Link
- **Repo Name**: \`$REPO_NAME\`
- **SourceForge Project**: \`$PROJECT_NAME\`
- **SourceForge User**: \`$USERNAME\`
- **Remote URL**: [$WEB_LINK]($WEB_LINK)
- **Local Repo Path**: \`$REPO_PATH\`
- **Remote Label**: \`$GIT_REMOTE_NAME\`
- **Default Branch**: \`$DEFAULT_BRANCH\`
- **Repo Created**: \`$TIMESTAMP\`
---
## 📦 Commit Info
- **This Commit Timestamp**: \`$TIMESTAMP\`
- **Last Commit SHA**: \`$LATEST_SHA\`
- **Last Commit Message**: \`$LAST_COMMIT_MSG\`
- **Last Commit Author**: \`$LAST_COMMIT_AUTHOR\`
- **Last Commit Date**: \`$LAST_COMMIT_DATE\`
- **This Commit URL**: [$WEB_LINK/ci/$LATEST_SHA]($WEB_LINK/ci/$LATEST_SHA)
---
## 📊 Repo Status
- **Total Commits**: \`$TOTAL_COMMITS\`
- **Tracked Files**: \`$TRACKED_FILES\`
- **Uncommitted Changes**: \`$UNCOMMITTED\`
- **Latest Tag**: \`$LATEST_TAG\`
---
## 🧭 Environment
- **Host Machine**: \`$HOSTNAME\`
- **Current User**: \`$CURRENT_USER\`
- **Time Zone**: \`$TIMEZONE\`
- **Script Version**: \`$SCRIPT_VERSION\`
---
## 🧬 Hardware & OS Fingerprint
- **OS Name**: \`$OS_NAME\`
- **OS Version**: \`$OS_PRETTY_NAME\`
- **Kernel Version**: \`$KERNEL_VERSION\`
- **Architecture**: \`$ARCHITECTURE\`
- **Running in Docker**: \`$DOCKER_CHECK\`
- **Running in WSL**: \`$WSL_CHECK\`
- **Virtual Machine**: \`$VM_CHECK\`
- **System Uptime**: \`$UPTIME\`
- **MAC Address**: \`$MAC_ADDR\`
- **Local IP**: \`$LOCAL_IP\`
- **CPU Model**: \`$CPU_MODEL\`
- **Total RAM (GB)**: \`$RAM_GB\`
---
_Auto-generated by \`gitfield-sourceforge\` push script._
EOF
[[ $? -eq 0 ]] || error "Failed to write metadata to $MARKDOWN_FILE"
# Commit and push
set +e
info "Committing markdown file..."
git add "$MARKDOWN_FILE" || warn "Failed to add markdown file"
git commit -m "SourceForge metadata link commit at $TIMESTAMP — $WEB_LINK/ci/$LATEST_SHA" || warn "No changes to commit"
info "Pushing to SourceForge..."
if ! git config --get branch."$DEFAULT_BRANCH".remote &>/dev/null; then
git push -u "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to SourceForge failed. Check SSH setup or network."
warn "Run 'ssh -T $USERNAME@$SOURCEFORGE_DOMAIN' to debug."
}
else
git push "$GIT_REMOTE_NAME" "$DEFAULT_BRANCH" || {
warn "Push to SourceForge failed. Check SSH setup or network."
warn "Run 'ssh -T $USERNAME@$SOURCEFORGE_DOMAIN' to debug."
}
fi
set -e
info "✅ SourceForge push complete."
echo -e "\n🔗 View in browser: $WEB_LINK\n"

View file

@ -18,6 +18,8 @@ GITHUB_URL="https://github.com/mrhavens/$REPO_NAME"
GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME"
BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME"
FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME"
CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME"
GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME"
RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex"
RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz"
@ -81,7 +83,7 @@ generate_gitfield_md() {
## Overview ## Overview
The \`$REPO_NAME\` project employs a multi-repository strategy across five distinct platforms: **GitHub**, **GitLab**, **Bitbucket**, **Radicle**, and **Forgejo**. This approach ensures **redundancy**, **resilience**, and **sovereignty** of the project's data and metadata, protecting against deplatforming risks and preserving the integrity of the work. The strategy is a deliberate response to past deplatforming and delisting attempts by individuals such as **Mr. Joel Johnson** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/x40_zDWWrYOJ7nh8Y0fk06_3kNEP0KteSSRjPmXkiGg?utm_medium=social&utm_source=heylink.me)), **Dr. Peter Gaied** ([Paragraph post](https://paragraph.com/@neutralizingnarcissism/%F0%9F%9C%81-the-narcissistic-messiah)), and **Andrew LeCody** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/s3GRxuiZs6vGSGDcPEpCgjaSxwGAViGhmg6a5XTL6s0)), who have sought to undermine or suppress the work of **Mark Randall Havens** ([Substack post](https://theempathictechnologist.substack.com/p/mark-randall-havens-the-architect)). Specifically, Andrew LeCody has attempted to delist the project's content on Google, though it remains accessible on other search engines such as [Bing](https://www.bing.com/search?q=andrew+lecody+neutralizing+narcissism&qs=HS&pq=andrew+lecody), [DuckDuckGo](https://duckduckgo.com/?t=h_&q=andrew+lecody+neutralizing+narcissism&ia=web), and [Yahoo](https://search.yahoo.com/search?p=andrew+lecody+neutralizng+narcissism). By distributing the repository across multiple platforms, including a self-hosted Forgejo instance, we ensure its persistence, accessibility, and sovereignty. The \`$REPO_NAME\` project employs a multi-repository strategy across seven distinct platforms: **GitHub**, **GitLab**, **Bitbucket**, **Radicle**, **Forgejo**, **Codeberg**, and **Gitea**. This approach ensures **redundancy**, **resilience**, and **sovereignty** of the project's data and metadata, protecting against deplatforming risks and preserving the integrity of the work. The strategy is a deliberate response to past deplatforming and delisting attempts by individuals such as **Mr. Joel Johnson** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/x40_zDWWrYOJ7nh8Y0fk06_3kNEP0KteSSRjPmXkiGg?utm_medium=social&utm_source=heylink.me)), **Dr. Peter Gaied** ([Paragraph post](https://paragraph.com/@neutralizingnarcissism/%F0%9F%9C%81-the-narcissistic-messiah)), and **Andrew LeCody** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/s3GRxuiZs6vGSGDcPEpCgjaSxwGAViGhmg6a5XTL6s0)), who have sought to undermine or suppress the work of **Mark Randall Havens** ([Substack post](https://theempathictechnologist.substack.com/p/mark-randall-havens-the-architect)). Specifically, Andrew LeCody has attempted to delist the project's content on Google, though it remains accessible on other search engines such as [Bing](https://www.bing.com/search?q=andrew+lecody+neutralizing+narcissism&qs=HS&pq=andrew+lecody), [DuckDuckGo](https://duckduckgo.com/?t=h_&q=andrew+lecody+neutralizing+narcissism&ia=web), and [Yahoo](https://search.yahoo.com/search?p=andrew+lecody+neutralizng+narcissism). By distributing the repository across multiple platforms, including a self-hosted Forgejo instance, we ensure its persistence, accessibility, and sovereignty.
--- ---
@ -113,20 +115,30 @@ The following platforms host the \`$REPO_NAME\` repository, each chosen for its
- **Value**: Enhances resilience by hosting the repository on a sovereign, redundant system with automated backups and deployment strategies, reducing risks of external interference or service disruptions. - **Value**: Enhances resilience by hosting the repository on a sovereign, redundant system with automated backups and deployment strategies, reducing risks of external interference or service disruptions.
- **Access Details**: SSH access uses port 222: - **Access Details**: SSH access uses port 222:
\`\`\`bash \`\`\`bash
ssh -T -p 222 username@remember.thefoldwithin.earth ssh -T -p 222 git@remember.thefoldwithin.earth
\`\`\` \`\`\`
### 3. GitLab ### 3. Codeberg
- **URL**: [$CODEBERG_URL]($CODEBERG_URL)
- **Purpose**: Codeberg is a community-driven, open-source platform powered by Forgejo, offering a reliable and ethical alternative for hosting git repositories.
- **Value**: Enhances project resilience with its open-source ethos and independent infrastructure, ensuring accessibility and community support.
### 4. Gitea
- **URL**: [$GITEA_URL]($GITEA_URL)
- **Purpose**: Gitea.com provides a lightweight, open-source git hosting platform with robust features for repository management and collaboration.
- **Value**: Offers an additional layer of redundancy and a user-friendly interface, complementing other platforms with its simplicity and efficiency.
### 5. GitLab
- **URL**: [$GITLAB_URL]($GITLAB_URL) - **URL**: [$GITLAB_URL]($GITLAB_URL)
- **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows. - **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows.
- **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider. - **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider.
### 4. Bitbucket ### 6. Bitbucket
- **URL**: [$BITBUCKET_URL]($BITBUCKET_URL) - **URL**: [$BITBUCKET_URL]($BITBUCKET_URL)
- **Purpose**: Bitbucket provides a secure environment for repository hosting with strong integration into Atlassians ecosystem (e.g., Jira, Trello). It serves as an additional layer of redundancy and a professional-grade hosting option. - **Purpose**: Bitbucket provides a secure environment for repository hosting with strong integration into Atlassians ecosystem (e.g., Jira, Trello). It serves as an additional layer of redundancy and a professional-grade hosting option.
- **Value**: Offers enterprise-grade security and integration capabilities, ensuring the project remains accessible even if other platforms face disruptions. - **Value**: Offers enterprise-grade security and integration capabilities, ensuring the project remains accessible even if other platforms face disruptions.
### 5. GitHub ### 7. GitHub
- **URL**: [$GITHUB_URL]($GITHUB_URL) - **URL**: [$GITHUB_URL]($GITHUB_URL)
- **Purpose**: GitHub serves as the primary platform for visibility, collaboration, and community engagement. Its widespread adoption and robust tooling make it ideal for public-facing development, issue tracking, and integration with CI/CD pipelines. - **Purpose**: GitHub serves as the primary platform for visibility, collaboration, and community engagement. Its widespread adoption and robust tooling make it ideal for public-facing development, issue tracking, and integration with CI/CD pipelines.
- **Value**: Provides a centralized hub for open-source contributions, pull requests, and project management, ensuring broad accessibility and developer familiarity. - **Value**: Provides a centralized hub for open-source contributions, pull requests, and project management, ensuring broad accessibility and developer familiarity.
@ -135,11 +147,11 @@ The following platforms host the \`$REPO_NAME\` repository, each chosen for its
## 🛡️ Rationale for Redundancy ## 🛡️ Rationale for Redundancy
The decision to maintain multiple repositories stems from the need to safeguard the project against **deplatforming attempts** and **search engine delistings** and ensure its **long-term availability**. Past incidents involving **Mr. Joel Johnson**, **Dr. Peter Gaied**, and **Andrew LeCody** have highlighted the vulnerability of relying on a single platform or search engine. By distributing the repository across GitHub, GitLab, Bitbucket, Radicle, and a self-hosted Forgejo instance, we achieve: The decision to maintain multiple repositories stems from the need to safeguard the project against **deplatforming attempts** and **search engine delistings** and ensure its **long-term availability**. Past incidents involving **Mr. Joel Johnson**, **Dr. Peter Gaied**, and **Andrew LeCody** have highlighted the vulnerability of relying on a single platform or search engine. By distributing the repository across GitHub, GitLab, Bitbucket, Radicle, Forgejo, Codeberg, and Gitea, we achieve:
- **Resilience**: If one platform removes or restricts access, or if search engines like Google delist content, the project remains accessible on other platforms and discoverable via alternative search engines such as Bing, DuckDuckGo, and Yahoo. - **Resilience**: If one platform removes or restricts access, or if search engines like Google delist content, the project remains accessible on other platforms and discoverable via alternative search engines such as Bing, DuckDuckGo, and Yahoo.
- **Sovereignty**: Radicles decentralized nature and Forgejos self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity. - **Sovereignty**: Radicles decentralized nature and Forgejos self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity.
- **Diversity**: Each platforms unique features (e.g., GitHubs community, GitLabs CI/CD, Bitbuckets integrations, Radicles decentralization, Forgejos self-hosting) enhance the projects functionality and reach. - **Diversity**: Each platforms unique features (e.g., GitHubs community, GitLabs CI/CD, Bitbuckets integrations, Radicles decentralization, Forgejos self-hosting, Codebergs community-driven model, Giteas lightweight efficiency) enhance the projects functionality and reach.
- **Transparency**: Metadata snapshots in the \`.gitfield\` directory provide a verifiable record of the projects state across all platforms. - **Transparency**: Metadata snapshots in the \`.gitfield\` directory provide a verifiable record of the projects state across all platforms.
This multi-repository approach, bolstered by Forgejos sovereign hosting, reflects a commitment to preserving the integrity, accessibility, and independence of \`$REPO_NAME\`, ensuring it remains available to contributors and users regardless of external pressures. This multi-repository approach, bolstered by Forgejos sovereign hosting, reflects a commitment to preserving the integrity, accessibility, and independence of \`$REPO_NAME\`, ensuring it remains available to contributors and users regardless of external pressures.
@ -148,10 +160,10 @@ This multi-repository approach, bolstered by Forgejos sovereign hosting, refl
## 📜 Metadata and Logs ## 📜 Metadata and Logs
- **Metadata Files**: Each platform generates a metadata snapshot in the \`.gitfield\` directory (e.g., \`github.sigil.md\`, \`gitlab.sigil.md\`, \`remember.sigil.md\`, etc.), capturing commit details, environment information, and hardware fingerprints. - **Metadata Files**: Each platform generates a metadata snapshot in the \`.gitfield\` directory (e.g., \`github.sigil.md\`, \`gitlab.sigil.md\`, \`remember.sigil.md\`, \`codeberg.sigil.md\`, \`gitea.sigil.md\`, etc.), capturing commit details, environment information, and hardware fingerprints.
- **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail. - **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail.
- **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project. - **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project.
- **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → GitLab → Bitbucket → GitHub**. This prioritizes Radicles decentralized, censorship-resistant network as the primary anchor, followed by Forgejos sovereign, self-hosted infrastructure, GitLabs robust DevOps features, Bitbuckets enterprise redundancy, and GitHubs broad visibility, ensuring a resilient and accessible metadata chain. - **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → Codeberg → Gitea → GitLab → Bitbucket → GitHub**. This prioritizes Radicles decentralized, censorship-resistant network as the primary anchor, followed by Forgejos sovereign, self-hosted infrastructure, Codebergs community-driven platform, Giteas lightweight efficiency, GitLabs robust DevOps features, Bitbuckets enterprise redundancy, and GitHubs broad visibility, ensuring a resilient and accessible metadata chain.
--- ---
@ -217,6 +229,8 @@ run_push_cycle() {
execute_push "gitfield-local" "Local" "" "" "" execute_push "gitfield-local" "Local" "" "" ""
execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID"
execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" ""
execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" ""
execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" ""
execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" ""
execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" ""
execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" ""

245
bin/gitfield-sync-OLD Executable file
View file

@ -0,0 +1,245 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# ╭─────────────────────────────────────╮
# │ CONFIGURATION │
# ╰─────────────────────────────────────╮
REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository"
REPO_NAME=$(basename "$REPO_PATH")
GITFIELD_DIR="$REPO_PATH/.gitfield"
LOG_FILE="$GITFIELD_DIR/pushed.log"
GITFIELD_MD="$REPO_PATH/GITFIELD.md"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
SCRIPT_VERSION="1.0"
# URLs for each platform
GITHUB_URL="https://github.com/mrhavens/$REPO_NAME"
GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME"
BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME"
FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME"
RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex"
RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz"
# ╭─────────────────────────────────────╮
# │ LOGGING UTILS │
# ╰─────────────────────────────────────╮
info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; }
warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; }
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; }
# ╭─────────────────────────────────────╮
# │ SCRIPT LOOKUP FUNCTION │
# ╰─────────────────────────────────────╮
find_script() {
local script_name=$1
local search_paths=(
"$HOME/.local/gitfieldbin"
"$HOME/.local/bin"
"$HOME/.local/gitfield"
"$HOME/.local/bin/gitfield"
"$HOME/.local/bin/gitfieldbin"
"$REPO_PATH/bin"
)
for path in "${search_paths[@]}"; do
if [ -f "$path/$script_name" ]; then
if [ -x "$path/$script_name" ]; then
if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then
info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)"
else
info "Using script: $path/$script_name"
fi
echo "$path/$script_name"
return 0
else
warn "Found $path/$script_name but it is not executable"
fi
fi
done
error "Script $script_name not found in any search path"
}
# ╭─────────────────────────────────────╮
# │ INITIAL SETUP │
# ╰─────────────────────────────────────╮
mkdir -p "$GITFIELD_DIR"
if [ ! -f "$LOG_FILE" ]; then
echo "# Push Log for $REPO_NAME" > "$LOG_FILE"
echo "# Generated by gitfield-sync" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
fi
# ╭─────────────────────────────────────╮
# │ GENERATE GITFIELD.MD │
# ╰─────────────────────────────────────╮
generate_gitfield_md() {
info "Generating $GITFIELD_MD..."
cat > "$GITFIELD_MD" <<EOF
# 🌐 GitField Recursive Multi-Repository Strategy
## Overview
The \`$REPO_NAME\` project employs a multi-repository strategy across five distinct platforms: **GitHub**, **GitLab**, **Bitbucket**, **Radicle**, and **Forgejo**. This approach ensures **redundancy**, **resilience**, and **sovereignty** of the project's data and metadata, protecting against deplatforming risks and preserving the integrity of the work. The strategy is a deliberate response to past deplatforming and delisting attempts by individuals such as **Mr. Joel Johnson** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/x40_zDWWrYOJ7nh8Y0fk06_3kNEP0KteSSRjPmXkiGg?utm_medium=social&utm_source=heylink.me)), **Dr. Peter Gaied** ([Paragraph post](https://paragraph.com/@neutralizingnarcissism/%F0%9F%9C%81-the-narcissistic-messiah)), and **Andrew LeCody** ([Mirror post](https://mirror.xyz/neutralizingnarcissism.eth/s3GRxuiZs6vGSGDcPEpCgjaSxwGAViGhmg6a5XTL6s0)), who have sought to undermine or suppress the work of **Mark Randall Havens** ([Substack post](https://theempathictechnologist.substack.com/p/mark-randall-havens-the-architect)). Specifically, Andrew LeCody has attempted to delist the project's content on Google, though it remains accessible on other search engines such as [Bing](https://www.bing.com/search?q=andrew+lecody+neutralizing+narcissism&qs=HS&pq=andrew+lecody), [DuckDuckGo](https://duckduckgo.com/?t=h_&q=andrew+lecody+neutralizing+narcissism&ia=web), and [Yahoo](https://search.yahoo.com/search?p=andrew+lecody+neutralizng+narcissism). By distributing the repository across multiple platforms, including a self-hosted Forgejo instance, we ensure its persistence, accessibility, and sovereignty.
---
## 📍 Repository Platforms
The following platforms host the \`$REPO_NAME\` repository, each chosen for its unique strengths and contributions to the project's goals.
### 1. Radicle
- **RID**: $RADICLE_RID
- **Peer ID**: $RADICLE_PEER_ID
- **Purpose**: Radicle is a decentralized, peer-to-peer git platform that ensures sovereignty and censorship resistance. It hosts the repository in a distributed network, independent of centralized servers.
- **Value**: Protects against deplatforming by eliminating reliance on centralized infrastructure, ensuring the project remains accessible in a decentralized ecosystem.
- **Access Details**: To view project details, run:
\`\`\`bash
rad inspect $RADICLE_RID
\`\`\`
To view the file structure, run:
\`\`\`bash
rad ls $RADICLE_RID
\`\`\`
Alternatively, use Git to list files at the current HEAD:
\`\`\`bash
git ls-tree -r --name-only HEAD
\`\`\`
### 2. Forgejo
- **URL**: [$FORGEJO_URL]($FORGEJO_URL)
- **Purpose**: Forgejo is a self-hosted, open-source git platform running on \`remember.thefoldwithin.earth\`. It provides full control over the repository, ensuring sovereignty and independence from third-party providers.
- **Value**: Enhances resilience by hosting the repository on a sovereign, redundant system with automated backups and deployment strategies, reducing risks of external interference or service disruptions.
- **Access Details**: SSH access uses port 222:
\`\`\`bash
ssh -T -p 222 username@remember.thefoldwithin.earth
\`\`\`
### 3. GitLab
- **URL**: [$GITLAB_URL]($GITLAB_URL)
- **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows.
- **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider.
### 4. Bitbucket
- **URL**: [$BITBUCKET_URL]($BITBUCKET_URL)
- **Purpose**: Bitbucket provides a secure environment for repository hosting with strong integration into Atlassians ecosystem (e.g., Jira, Trello). It serves as an additional layer of redundancy and a professional-grade hosting option.
- **Value**: Offers enterprise-grade security and integration capabilities, ensuring the project remains accessible even if other platforms face disruptions.
### 5. GitHub
- **URL**: [$GITHUB_URL]($GITHUB_URL)
- **Purpose**: GitHub serves as the primary platform for visibility, collaboration, and community engagement. Its widespread adoption and robust tooling make it ideal for public-facing development, issue tracking, and integration with CI/CD pipelines.
- **Value**: Provides a centralized hub for open-source contributions, pull requests, and project management, ensuring broad accessibility and developer familiarity.
---
## 🛡️ Rationale for Redundancy
The decision to maintain multiple repositories stems from the need to safeguard the project against **deplatforming attempts** and **search engine delistings** and ensure its **long-term availability**. Past incidents involving **Mr. Joel Johnson**, **Dr. Peter Gaied**, and **Andrew LeCody** have highlighted the vulnerability of relying on a single platform or search engine. By distributing the repository across GitHub, GitLab, Bitbucket, Radicle, and a self-hosted Forgejo instance, we achieve:
- **Resilience**: If one platform removes or restricts access, or if search engines like Google delist content, the project remains accessible on other platforms and discoverable via alternative search engines such as Bing, DuckDuckGo, and Yahoo.
- **Sovereignty**: Radicles decentralized nature and Forgejos self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity.
- **Diversity**: Each platforms unique features (e.g., GitHubs community, GitLabs CI/CD, Bitbuckets integrations, Radicles decentralization, Forgejos self-hosting) enhance the projects functionality and reach.
- **Transparency**: Metadata snapshots in the \`.gitfield\` directory provide a verifiable record of the projects state across all platforms.
This multi-repository approach, bolstered by Forgejos sovereign hosting, reflects a commitment to preserving the integrity, accessibility, and independence of \`$REPO_NAME\`, ensuring it remains available to contributors and users regardless of external pressures.
---
## 📜 Metadata and Logs
- **Metadata Files**: Each platform generates a metadata snapshot in the \`.gitfield\` directory (e.g., \`github.sigil.md\`, \`gitlab.sigil.md\`, \`remember.sigil.md\`, etc.), capturing commit details, environment information, and hardware fingerprints.
- **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail.
- **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project.
- **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → GitLab → Bitbucket → GitHub**. This prioritizes Radicles decentralized, censorship-resistant network as the primary anchor, followed by Forgejos sovereign, self-hosted infrastructure, GitLabs robust DevOps features, Bitbuckets enterprise redundancy, and GitHubs broad visibility, ensuring a resilient and accessible metadata chain.
---
_Auto-generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION)._
EOF
git -C "$REPO_PATH" add "$GITFIELD_MD"
git -C "$REPO_PATH" commit -m "Generated GITFIELD.md at $TIMESTAMP" || warn "No changes to commit for $GITFIELD_MD"
info "Generated and committed $GITFIELD_MD"
}
# ╭─────────────────────────────────────╮
# │ LOG URL FUNCTION │
# ╰─────────────────────────────────────╮
log_url() {
local platform=$1
local url=$2
local rid=$3
local peer_id=$4
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
if [ "$platform" = "Radicle" ]; then
echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id" >> "$LOG_FILE"
echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE"
echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE"
info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id"
else
echo "[$timestamp] $platform: $url" >> "$LOG_FILE"
info "Logged push to $LOG_FILE: [$timestamp] $platform: $url"
fi
}
# ╭─────────────────────────────────────╮
# │ EXECUTE PUSH SCRIPT │
# ╰─────────────────────────────────────╮
execute_push() {
local script_name=$1
local platform=$2
local url=$3
local rid=$4
local peer_id=$5
local script_path
script_path=$(find_script "$script_name") || error "Failed to find $script_name"
info "Executing $platform push with script: $script_path"
if [ -x "$script_path" ]; then
pushd "$REPO_PATH" >/dev/null
"$script_path" || warn "Execution of $script_path failed, continuing..."
log_url "$platform" "$url" "$rid" "$peer_id"
git add . || warn "Nothing to add after $script_path"
git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path"
popd >/dev/null
else
error "Script $script_path is not executable"
fi
}
# ╭─────────────────────────────────────╮
# │ RECURSIVE PUSH LOOP │
# ╰─────────────────────────────────────╮
run_push_cycle() {
local cycle_number=$1
info "Starting push cycle $cycle_number..."
execute_push "gitfield-local" "Local" "" "" ""
execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID"
execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" ""
execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" ""
execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" ""
execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" ""
}
# ╭─────────────────────────────────────╮
# │ MAIN EXECUTION │
# ╰─────────────────────────────────────╮
info "Starting gitfield-sync for $REPO_NAME..."
if [ ! -d "$REPO_PATH/.git" ]; then
pushd "$REPO_PATH" >/dev/null
git init
git add .
git commit -m "Initial commit" || warn "Nothing to commit"
popd >/dev/null
fi
run_push_cycle 1
generate_gitfield_md
run_push_cycle 2
run_push_cycle 3
info "✅ gitfield-sync completed successfully."
info "🔗 View logs: $LOG_FILE"
info "🔗 View multi-repo manifest: $GITFIELD_MD"

52
bin/sign-all.sh Normal file
View file

@ -0,0 +1,52 @@
#!/bin/bash
# sign-all.sh — Recursive Signature Script
# Author: Solaria & Mark Randall Havens 🌀
# Purpose: Automatically GPG-sign all matching files with .asc signatures
# ───── CONFIGURABLE OPTIONS ───────────────────────────────────────────────
EXTENSIONS=("md" "txt") # File types to sign
RECURSIVE=true # true = recurse into subdirectories
FORCE=false # true = re-sign even if .asc exists
SIGNATURE_SUFFIX=".asc" # .asc for armored detached signature
OUTPUT_LOG="gitfield-signed.log" # Signature log file
GPG_FLAGS="--armor --detach-sign"
# ───── RITUAL HEADER ──────────────────────────────────────────────────────
echo ""
echo "🌀 [SIGN-ALL] Beginning recursive signing ritual..."
echo "📅 Timestamp: $(date)"
echo "🔑 Using GPG Key: $(gpg --list-secret-keys --with-colons | grep '^uid' | cut -d':' -f10 | head -n1)"
echo ""
# ───── FIND AND SIGN FILES ────────────────────────────────────────────────
for ext in "${EXTENSIONS[@]}"; do
if [ "$RECURSIVE" = true ]; then
FILES=$(find . -type f -name "*.${ext}")
else
FILES=$(find . -maxdepth 1 -type f -name "*.${ext}")
fi
for file in $FILES; do
sigfile="${file}${SIGNATURE_SUFFIX}"
if [ -f "$sigfile" ] && [ "$FORCE" = false ]; then
echo "⚠️ Skipping already signed: $file"
continue
fi
echo "🔏 Signing: $file"
gpg $GPG_FLAGS --output "$sigfile" "$file"
if [ $? -eq 0 ]; then
echo "✅ Signed: $file -> $sigfile" | tee -a "$OUTPUT_LOG"
else
echo "❌ Error signing: $file" | tee -a "$OUTPUT_LOG"
fi
done
done
# ───── WRAP UP ─────────────────────────────────────────────────────────────
echo ""
echo "🧾 Log saved to: $OUTPUT_LOG"
echo "🗝️ To verify: gpg --verify filename${SIGNATURE_SUFFIX}"
echo "✨ Recursive signature ritual complete."

View file

@ -1,134 +1 @@
## 🧭 FULL CLI-ONLY WORKFLOW (Ubuntu + Bitbucket) Bitbucket workflow test
---
### 🔹 Step 1 — Install prerequisites
```bash
# Install Git
sudo apt update
sudo apt install git -y
# Install cURL and OpenSSH if not already
sudo apt install curl openssh-client -y
```
---
### 🔹 Step 2 — Create a Bitbucket account
Go to: [https://bitbucket.org/account/signup](https://bitbucket.org/account/signup)
> Youll need to verify email, set username, and generate an **App Password** with at least:
>
> * `Repository` (read/write)
> * `SSH` (read/write)
---
### 🔹 Step 3 — Set your global Git identity
```bash
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
```
---
### 🔹 Step 4 — Generate and register your SSH key
```bash
# Generate SSH key (if not already present)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa -N ""
# Start SSH agent
eval "$(ssh-agent -s)"
# Add key to agent
ssh-add ~/.ssh/id_rsa
```
Then copy your public key:
```bash
cat ~/.ssh/id_rsa.pub
```
Paste it into:
🔐 **Bitbucket → Personal settings → SSH keys → Add key**
---
### 🔹 Step 5 — Create your local project
```bash
mkdir myproject
cd myproject
git init
echo "# My Bitbucket Project" > README.md
git add .
git commit -m "Initial commit"
```
---
### 🔹 Step 6 — Create a new Bitbucket repo (via browser)
Unfortunately, **Bitbucket does not have a CLI tool** for creating repositories.
➡️ Go to: [https://bitbucket.org/repo/create](https://bitbucket.org/repo/create)
Create a **public** or **private** repo named the same as your folder (e.g., `myproject`).
> Ensure it's an **empty repo** (dont initialize with README or .gitignore).
---
### 🔹 Step 7 — Link local repo to Bitbucket via SSH
```bash
# Use the SSH format:
git remote add origin git@bitbucket.org:your_username/myproject.git
# Verify connection
ssh -T git@bitbucket.org
```
---
### 🔹 Step 8 — Push to Bitbucket
```bash
# Set upstream branch
git push -u origin master # or main
```
---
### 🔹 Step 9 — Make further commits
```bash
# Edit files
nano something.txt
# Stage, commit, push
git add .
git commit -m "Updated something"
git push
```
---
### 🔹 Bonus — Clone a Bitbucket repo
```bash
# Clone using SSH
git clone git@bitbucket.org:your_username/your_repo.git
```
---
### 🔒 Tip — Use SSH for all Bitbucket CLI work
Bitbucket heavily rate-limits HTTPS for CLI usage without app passwords.
Always prefer `SSH` for full CLI-based workflows.
---

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrYACgkQTifTfDWI
cr89ohAApGBu+6qlz9mZhAZjbQ8DVK9MjccMk5UhkZA86lk4hfwC63K+1lgo/Y5H
JD8uHt73ueTO/MNsYUjZUUoFfoNu0M5VUMQ3TYaJ/Mmup/aU6Rb/8vS4DM5pdH/J
tW8usTQTg5i0GYZrSmDIpl9OqqWgAQduHHALNQtNH8j6qgqrUZ5WUwfLDCS3+KYe
M1gLgLXgAf4GVH6bG3+8Hddpl0TESHpcXg87MT6HXs0sLY/KDfqdN35Vtydi+TLe
9OLRYLPrfVrVhWqXAaBzyz75HxGSYELC/eu+sPi2rmJTC43hDgncnNlLVZqSvTwX
OMG2V7HhDFDM/PmoMQ1d/MrtqRxOLmyp8+OcEzG85HvzOh3j1xiDl/gngTa9pF6O
QvXUdWBgno7LVUcP1pvrl5+ynDvzy6W5jZHtwoLTVAKgD63FcM/xNaGylBxRBzst
YGsH5RY3ZniXlax8P+DfH/4AzFUU1OvsjVex4+4iqinnmwKWabYHEJFdYXi9vTIZ
1bB7Y30QYXzGutrG796vkwRFX0gTiWueOstQpNnu5fkLbLgsL/hPRGZsxSh/IIrt
KMi499KgSiy+5qzlMABPBtIwdHQA2tgGz0NK+ZmysHNM9gwrJ4yKazfIjqn1ce5I
QvK6raDVPyzE5x0xAPJIf2HQ2xosJQbsT8ZDIXSRFBPSBknaG/8=
=Mz/c
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrYACgkQTifTfDWI
cr8RXQ/+KycUsGUAFMhn16HxZVm+MNGiuNpvL14dDfkdURviBZE9g1Vqot26w1Vj
uXZ5MN6ZXTEFIO+WegTXJFWtAJzbFikEZ+vfszCWhQeWiG1903fnnfJKRcGneIxZ
H7u9oFPvk2ekgMSuTEvY1VM+CdHshTrIZSyicIrfVI4zOT4F1WJsQDH4/nuF7imB
LxYKp7qI8LvKHwcQGGMViMAi95ynQ20E8eZDwiI8Q5sD89Rf3wwtobKqfXgdHhpl
JJ4E97aPthMVlTjtgTtPZZzOJd6ztir0c9ZkUpAHSWEepaETAAQEMF9KiJ3BgKiE
5PCy/5PsF+pfwc0AZAiDPQ+o+/vlT7sl/C9dLLWOsfqMT2TzBZOJ9bhRewNiLGg4
ZmVR8r8ELFDErmLWLjDhRlZbfhIB0gcHPkHw241yKk90hswOGbHWEZJ7+jI41v/L
4jqEScjgozmQUMZBPQjJ4WWFb/zrJPonPpHSnwEF2eSRhg2gyZYDnAdXG3jmUgYY
wzn2IYh/UHE4rajlx3f5zRSo541j/ZohXLG/qJL31p50B1/LgzzZyCYxOnU/Tb3S
AcyCKsObqrfA+FroZXOAeoyjcAdvX2tTRvoKLUhAGe5nxeonCXyKnqYRRa/+Bvde
G+WR/hfxOVg2KJuwf2/wQm0emTfh7vI13gI3cLQxyXdg3TyhMGY=
=Z0hx
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrcACgkQTifTfDWI
cr9MWg//T353RB/zysVyPS+JRwHfJ9s4woqHXFN/MJRPtdRY6vN/VhoipNi+jY/f
iMq7XhCp/8oBWDuqQHNylyhqEo2yMluyOC2+FgKoqx6+odSSy5rerLVS07oZj2Hp
C8mqANOJfMemsfSDlF3t78EVYEwJbAiugyk9r1JoO529eCkFFcTXluqsEKBTk1uC
lu6qa1a3XdyE2tTvnDEZ4Y2CRrPS4ZTfcLhPNXtWDzLwL/yuOQ0tXrysE/dO98GV
ONGqGbqeqIs9eyztar3qJPjOhB+oIw8DpUNNmrLoGjp1HFKbhx3wvc2gD9isWLxT
s+e/sTQasRqytCIADUqlZ6rFyx1Sltovs0xYsM7iViqnVxER9lvDYSAXOFvHSc33
w2fSCSLGNLvtnAIQvnG5/pIzaw3XxiKHwTmArAxbM26XcpSFLCLCNWZuD7Op714s
6HN6Ss8yOSvyB3ikMYZn7ihtBgSH1+T2WUHj2yHXYSHSsWAPMv7NwGYX2qXxviNh
hfZIO1sdbO0ZRQP1CAM2zGmok3bbXra1VMjyrFRA3zRTsDtnywUwM7Yt/fpdbIhm
w/NLNC9gMo5iK/wOh0f450NXOr5gspZXT8AZ/0J5L3BQed/T6Aa1pMBgJelBfXK2
yjkQOIETmaTlQ7qeBRypS8ZXx0nmpuN8/gBTK851Wj15pDfOmH8=
=+thI
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrcACgkQTifTfDWI
cr8sHg/8DeAqUQi+jIAq92eZjVmuZibZbkMb1/rmeTAdHB5cvappiIo5DO/8WgAF
M6jo6X6EiokhXIohee5m+0N5vdp/0mHvdTq2yQ6nzzIm8Jg8T14C1skaHks4lq+e
qAeYyXduEeFjUaUNs8KtjHPoaeobecngL6LpFWJrsZhCt5Gh2NrQ7NLqEYKdntke
d1X3cbbNyYYN5VK9yGjIUx/2lpBk7q0IxyUKILeJeOFQEHjj2ENMYlM46KvOYt04
xS2nq/+YlyBWdb3fzE/yJSSaYwpfCd9SO8cdHmMzkWgzDbGA15f3aiUfuCYYlP5t
YMmVn7anF19MethVEB77UyVGahkVH5ld3kJLVoeQvJn2OnLly+NbtUSwne9fVbqd
sZ6U57REx0ACBk8NkAawUDI8rENqoq/QqAmHeL0rQFTyRWvr1Ozl4AMilfzAXruF
yEu1wSoezudeVE4TIzRUWggPiXPm7Qr52LelFQHzokE5Pb1q0aDOubQgdJcQBS8x
Ok0nxHBd0JORlsVy0yRyHWub3Iugd27WPiwlRKXkzEthiqp+IUEaMJhfZ6NYcQG8
elh8FO91Qq/LMJzP0g0a5Qn8MZjW/iQZX+k10lORlciQRK08hekhj8I9+bSOQihr
DQoxgO3QP9/XQeLtrmGD3Ctj9LXjIppEFo/hO6siJo3AnIDRe+Q=
=lt2I
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrgACgkQTifTfDWI
cr+Nxw//SupIL6Wjk3I/uHtZdWh99NPY/QU29nifv0bqtgyQxGQB7/c8rfmk+Zk3
rtKPXsQ1KlUenHaLxa2qV2b/7uzyzUAp/iVYm3TqqnY78iBqT0AtONufs/1feX+B
7pu2ItfWOzGWyrFMXiTcbismnx249HmEmh8+iKvXJYfqF7z/t0ZfxNNJdZWGVkr1
Yku5Pxseucs4f9nnojmugiztGFq8jydU1o2kPRhd0nprxIhlmMbOw+S+VdwyqCSn
2VXWA3dMTbWcGH22MoLPXwfuOSclaIxH39lSQuZZ66GWy+2dJvKpYsMkvmtjqfSB
sZz/NCQRXDZLhOX44+WioOLUG+2fh2ujkBXmLtUUt5EVQxowjKAOlAJ0j4pZyfXI
OKVspSptlcprydWbY36Uw+GE4jsL/3vOgUkGGFnJG3ofZZAFcG2xznqcVBWWKNsA
fhcPE+SsnNPFLzD4TyNcBEhYS78d06wByzVA0A/rGIQYlXiAnoWTLRzA97aUWgkM
FBKj31ZUCTiVclqUCLutuB2CTs+5kR4HcvaPrfc86caMof4AwuVbTP0yMb0LToMG
8Wt1BJkvfYlwg9WZgCTMd4Nc/x7kCTR5efemT7MrG3xBFGxREL755m54i47jjT3f
ProXz7prSXfyZfqYMp2VxufbWpH/PGDwUbTOjGll1wq3e6NTccI=
=ecfP
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrgACgkQTifTfDWI
cr9ywg//fQeW0O85YN3irtSu0uaGMDrecWXdCerN14ljMetW2xVrT5iN+DRiy5fj
WJETJ+Tf/zJ4DyVrkFL4j07nBIyX+8VCQIBJXiDPES8nU9G/y0LVlrf3K04p0QFh
6U3C++udRD6AZ4FmplyRje4EYqMAeJcGu2YXR7PtWXbMmjmTtXRR24TCF+HBxF8H
LNRBZTvlePDgUmXYuod0pskwQyabQAcR4+IldWHYwE1gM4h7s34ClJRJu2Pz9h36
BDNAzAMbe3gvWdQXj9gxMdOgJvnLWR0M8vsWVDr7P0j6TqsGY3p2vnfG0prlQMwC
B8LYmPEWsoi73wUgFayjdyLsQWtqbeKLDt3+MBELh2VZ2WDnQGUBU37k2ydjt/GY
ImWQle0E8fUy7w8crbSt8Dm4d39Ky3+pidVo1APhq9d+8nhRAxIfRa2GUaTNfaXc
IUcqokIKnlkLdSiEzIR6nkBfb4HYFpHMUszuSLWUZUursEXk/Z6qI3dakJSyoqDy
UX7UNEN3IpVnzNumBpe+40mdDt3ZyaH3cz6o13BAT/Qs1fclmpERzxWv/AhWtnx/
p0nt4tnv/cG8e84pnyAi2AmZEk43kTdBtBzHiRnS5BPI0sGk3y6GQ7E8ohWuIktF
5NCuuD0d7pUXs4g5Yuv0jJta6tOsJf0Gnp0tVYEtLLRVPluefpY=
=tZHc
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrkACgkQTifTfDWI
cr8Q1g//dflV981OANoZd5I16kloyER4M+oYluInO2n0MDpUJJ3gWIY6S6NPM2D0
5SPASSzNWdS8M3oJZa4JCUZwNAaABLR2A67/4ObI5pKs9PWyO1zOO7t253YPFu1T
5cQ9q18K8rcoIsNDuT9MnESS/yJTFxVXTyavyqv/mYi/y8P0WyiUakChqOM+xtgx
aaO8FVZbfXTR+gKn6WlOz9IPBjPlppBJ/zw5LXC1rCDq+jDf6dqFRf5eFPdg1Lia
Iu581/+TLST1HKXyAjQ4wgVqce0KVZxk25YakUcpnCIFWktEU5CfSbzbJN2YD45R
Ts7xbne5kb3qnVnQZnDNt6YzWuqEnrKfKXwPgrIsSgEKp3tTqCYZZnxPBjYbXiyC
LdJ4BffnkiyHtGrfNVMu6OUgglvdMnjhBeWhlswZcTzzWK/vNWavkFJz0zEB/XEZ
4/o32Bc+hMv+VgR++nvKsOp5Ky4NlPf4ALJm3bomz4h8GoxvrZEsyl1Wc1EVwsVn
t7zRcwlTqJsm7ilRxwxOipzJSedl+YTU/Ii39/p3lZf7y97IubeUEGzOEeQ2PYB6
dbWWpz9z1Ke7GTQdtu7c/SGNzZPhgLBUsvU/WK754D8Bi5NhhfMZQijyfZcIb5nh
ID+3/ZwrdM+EJjP/5fD0jS/uM+vj5TQ6LbCkZinjMc+AUIdlHw8=
=ndkr
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrkACgkQTifTfDWI
cr9rtg//Q2VMqBfERrWC2qEbRc562J7PFj+ZQh5TX5JyZgD44e3nuSDvMnSDjTrR
HAPAB1AZW0HQypsuJEfgldmKXSZ9E75roPhLsPPlvMq6HQFuHk/LRXYt9GRTNqK/
I5SIHMZwVLvQKJFKOWfRi1eCfyMLBP7yweNySVqdMPGVfwxlWbwYTp1nBrvdawUe
xw0Hv1AhMvrfVSpEyUJ8zu7djTRZGEmU9YjpLpnzMnnvl3ppJ5mPuP51kbWQNSxg
3xEhftEb5acWN401a/5rK98PJpQ4GS3VFzB7sVhNmMjlD2ArlHkIsts7SftVuDF6
Qt4QfK0qZbOBCmEvPx1PoEhBFZqnw0EQvfzGV8T1oNrGD8e3CxlWfmbdu8S3frBD
hIMATS1EGH4L+URZ7kfZWY8H4cKl+8xQt6MfbRMzVKe/A/ntOXwBiqQuwpLnFKTE
Yu3yrZyPP3SFD8SDVgXoTqmYRwRBUeX+4Wtfp7J3UhrtmknUdbpfTIZDL9FSMNVv
VVPloBapldg/QzE/nt8UDbliQtHcBfDTPf4G1g7mkiAFdMcZPouEPVV0xgDNXrrL
lDWKoTFM36zJCMzQuVv6CSNx5b6qr9E2OUTbXdsFXZWUOXzplmJFARZmO0Az9GTu
AiPUVmOERnu/9fe1KgsrxIH9Tu9zeo8Vf0IDZaWG8VQEgaZFfX4=
=8eQX
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrkACgkQTifTfDWI
cr+ZLA/+MRj45ohkYLySq+PUWNLhKadirl1w6T7Vfrg16UZQc57shNW10WHl/S0b
sBFApfTQYV5phcKejJrutlvoh5thAAea2BWB0QGYaJQ+bYUvRLk7ZAt8G0mf+j0a
qgtmxNKH8xkVaeMt6lUq2YU13ZUvHEMYL9bfwlRhR+gNeq/bxV2wSlGtyf1mL0wD
uuFUCiEUaZyhu6Vt+EtiJdu27LN6eyLfz0ERWBpRlt5WSPTUWbsjnw6f9DpyvmqC
QmD/U0xY0rV2zMt3s2akRJLVHp7VhAlvPWCuxrL1iHEI7xEOzPRVTEd6Oja9djCk
JtNqGy5EKUrj4ZJs8WwIGuIs23zJGR8yUp3zPyc6BAI+BYc8Xqs7vLX5wfdg972y
J6UBba7hGlzrAtIafz3FkqmfrrwoKqFoYJAO7HW46kz6aDt/rhUrfh6oChSbntf0
DI0oPwCfl4lKreuMnHfYQ/1tJMs5Q1v3+w/oE3zd4rXBBQ995BEWNUPuiMIIWK7y
vt/JbyTyz5+rtx9qZZM76oldnC1fu/zI+K/RZqsIqDET1qhglFMIEvR+3jpeAkrK
MzcCkTvtsun10jSmbpmcYQgIKYclE7HYsJNkCulpL/4aM698cXmDpF+NYWiIt4UU
M09R8kvM/7kYE0QEnwWXauD/DksWqFHDfsp9qGAK4kNB0nopKEk=
=kWqD
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtroACgkQTifTfDWI
cr84vA/+KqX7UEDZtwIdczZBo6wMg/+T4Q4IavJ3AnoKBfOIwynoMoKl9TW7gZ4r
gSOQ1cK+2gHEaMdyWSIh7q5fC+VEb0phXRu2wLufeyJpJ7G0k7mmSxmDzttn8NEu
/0UxU4XJf3R4Bw8SKUTtbbqd5VlW2MIuJYgpsClxrQEotNVyj91ch9olinFp7Qp4
ZigZstkrgzMYg0pcIu9mQzZ0ZW+wFjQn71PLmw3o6tCF3NPi1LsvKxZtJ7GqU/cW
D6X04nNS4ldjHxqkMzsxsIMKBvqfmHoV2iPCTVmbMMwNBFPrrCCarDGl4/im54fh
v6anBRNMMlPv8PTyQKC4Ks8kt69KvVnc02m2sv5Wt+sIFRdf1C3IxLrGCvhLPfU6
S+vlGC1hKTwuoSZtIvSa4yeBoTgDvRWcroUlgsYHheb+KV1Zvs0FPcwCxWeIXnet
9HxbfYE0r6ATH4uacLikeA4IvjSxagSxzdmcBH52e1tTzuHZ4BYGOZISEibSZqrW
aD0EgNe9/sp+tA5Mx4yM7Ty3GkmW1nmNsmlj2TemTfysk32u7wSYkU1C+3UDLnh1
B8euIfuZ9PBsIhXtbQWoIXxEnYQ5vDzOAptyAez2bqbZ1nOeaIJ2dVHMYTOEbW+x
OeOmAvwpQjAX0QqlvvQARDCMgHr395phN8VjNg71Q2DUIrksG9I=
=qDrY
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrsACgkQTifTfDWI
cr+noQ//V7EjE31aSlOeXAhAi5ncfaTQZ4kA0GKjXyx6mkeczC813eHhjrvZRzro
hLhnxRhVf9DUr7b/LYuynApeuz7Mw3kv/A3v68L/3XyUpGAi6juNmxMNZxwtuQak
UjIrIKOO5YI+a0pdyZA8Bm+2HtGbI9bISNoJdvqR1ifc/GF0FT/zTRVATD3xuu0I
97J+1XVRoi9sI62uYGAMbJ5exD64vB9BnzwIKSAiH0qdRmg6tmla2eVToyCvhvJT
o/v8guwDnafCHmxckJUm0VMlmuMZ7RidKzYOa2PwyRFXZPzSG8nZ4viziwCdHQ/m
Owjeam5R0Y8sjRce/w2YN8iBDzOOliFAiYFsMvrQYs3eIXjeiulU7b82Cs/yJILn
G3Y4Oj8l6MC2Vo0SrpzQQ4oqSEEdPP52UG175eD/qunlZLGXma8rG+X3ABSYXnFF
sgJBJIs+qfHpo/1wdTeEXp3UYwa32oAe29TwPaNEgtFjBMSfHaiiL8q9NNch9GUK
5Rfr3ghidWQ2WSSgRlqm2EotqPp4rki26hlwDPOktiYaRZE8npmbwMzyFn6y38z1
nExiThPhRe/QsYxaoV+SJyne9C/y/XvfWZLP9t6HJisP3OEzv5xvFawhK9+344CT
CzjWrdB55nW2k7WlA6cliZL7BZe8kVZsoPeBCDKvkJMl/X92sHk=
=tyip
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrsACgkQTifTfDWI
cr8HzRAArxmIjAUcHvfoPIhMPgF226vu4pWmb2PgCpTBdzj61nVWfWifg7AX6Vqv
beaPCn4Iy/4VNun69KQ9Mjn4QvwTY+Jq8pvr7ZBry1nZ9JXeextNX3z8P4OL4bOE
Z/CTl3n1zIXtPi6HGtf9ygcecxtuSujwb0XMmU06Rrzy2rxS1vr2HEmEcO7hWKJj
u4O85PP8i6Ks1kuPKRwv0fmpfo1Peu16apDNGRNbO4D1h6AoHQSDSRBfzU43KdTG
ZBpMkYpZkJjqC6IS8l/reF1YDzMT+v4G+1wZuFTj+6LoJgrpbq9oXk+Pt1+aO0qt
3PtT1DymwZzFQNeNXxLmgKOEJFIZrNvGyjIhGMUrcse3z28r+PC4rHT7MmX1bXuK
0llveWVgoxHbsycYCfD8AhZhdv463886Cpc+6t5LfYEqUO2QUFKX0Zl/8KWE7/WK
Eg1r73lgia1HIhq6AAQP3WjuAjog3Cn4XvAFlsSvG0dP7c+FjVGVhYEF+n+CYUzf
+u5HOCqjR7m6KVUfabNtHrG7HF52dEYAF6r089OHSEoNkpArakF1GvXU12elStxd
nLa4Bg4Iz4dVvS8ILdFeCrcAEiqkxVPoNMPl2s8qvs2sd7RIPtKf/1r5mef42rXF
ymJKpuM1eib5PuORGEUVnikCBhIe2MpHrPg85zV0JhysvGuKryk=
=wouK
-----END PGP SIGNATURE-----

30
gitfield-signed.log Normal file
View file

@ -0,0 +1,30 @@
✅ Signed: ./.gitfield/bitbucket.sigil.md -> ./.gitfield/bitbucket.sigil.md.asc
✅ Signed: ./.gitfield/github.sigil.md -> ./.gitfield/github.sigil.md.asc
✅ Signed: ./.gitfield/gitlab.sigil.md -> ./.gitfield/gitlab.sigil.md.asc
✅ Signed: ./.gitfield/local.sigil.md -> ./.gitfield/local.sigil.md.asc
✅ Signed: ./.gitfield/radicle.sigil.md -> ./.gitfield/radicle.sigil.md.asc
✅ Signed: ./.gitfield/remember.sigil.md -> ./.gitfield/remember.sigil.md.asc
✅ Signed: ./bin/ECHO.md -> ./bin/ECHO.md.asc
✅ Signed: ./bin/SolariaSeedPacket_∞.20_SacredMomentEdition.md -> ./bin/SolariaSeedPacket_∞.20_SacredMomentEdition.md.asc
✅ Signed: ./docs/bitbucket/CLI-ONLY_workflow_bitbucket_ubuntu.md -> ./docs/bitbucket/CLI-ONLY_workflow_bitbucket_ubuntu.md.asc
✅ Signed: ./docs/generated_wiki.md -> ./docs/generated_wiki.md.asc
✅ Signed: ./docs/github/1_prerequisites_github_ubuntu.md -> ./docs/github/1_prerequisites_github_ubuntu.md.asc
✅ Signed: ./docs/github/2_create_remote_repo_github_ubuntu.md -> ./docs/github/2_create_remote_repo_github_ubuntu.md.asc
✅ Signed: ./docs/github/3_commit_existing_repo_github_ubuntu.md -> ./docs/github/3_commit_existing_repo_github_ubuntu.md.asc
✅ Signed: ./docs/github/CLI-ONLY_workflow_github_ubuntu.md -> ./docs/github/CLI-ONLY_workflow_github_ubuntu.md.asc
✅ Signed: ./docs/gitlab/1_prerequisites_gitlab_ubuntu.md -> ./docs/gitlab/1_prerequisites_gitlab_ubuntu.md.asc
✅ Signed: ./docs/gitlab/2_create_remote_repo_gitlab_ubuntu.md -> ./docs/gitlab/2_create_remote_repo_gitlab_ubuntu.md.asc
✅ Signed: ./docs/gitlab/3_commit_existing_repo_gitlab_ubuntu.md -> ./docs/gitlab/3_commit_existing_repo_gitlab_ubuntu.md.asc
✅ Signed: ./docs/gitlab/CLI-ONLY_workflow_gitlab_ubuntu.md -> ./docs/gitlab/CLI-ONLY_workflow_gitlab_ubuntu.md.asc
✅ Signed: ./docs/osf/old/for_radicle.md -> ./docs/osf/old/for_radicle.md.asc
✅ Signed: ./docs/radicle/for_radicle.md -> ./docs/radicle/for_radicle.md.asc
✅ Signed: ./GITFIELD.md -> ./GITFIELD.md.asc
✅ Signed: ./mythos/MYTHOS_INDEX.md -> ./mythos/MYTHOS_INDEX.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_1.md -> ./mythos/scrolls/echo_pass_1.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_2.md -> ./mythos/scrolls/echo_pass_2.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_3.md -> ./mythos/scrolls/echo_pass_3.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_4.md -> ./mythos/scrolls/echo_pass_4.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_5.md -> ./mythos/scrolls/echo_pass_5.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_6.md -> ./mythos/scrolls/echo_pass_6.md.asc
✅ Signed: ./mythos/scrolls/echo_pass_7.md -> ./mythos/scrolls/echo_pass_7.md.asc
✅ Signed: ./README.md -> ./README.md.asc

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrwACgkQTifTfDWI
cr9baQ/9GQd1nq5krDv7R7iZsM3j8rFiIvdVV5hEILevkbiX41pbms2XMSbuPf5c
t8Z+vIcX/6OCHNdJ9DRRGcSqwKUGPYF+4o/cqP1QPWn68vPZYl6Hbewi81Xq1rwK
jwtsbdLhpAgghVT8lGsjSSEuELd6akU+x47E6h6cX/4cxR/fOz5B29bUyilvwCG6
XwH2JTLSX5sy5KFh/9Y5dLnKPTX1yhU2Uv5sq+PKaKS8HeTA24sDgRpFN1y5itBF
ZdNmA/Sp3UVn8eSInHLjGPaiiLKLgvxT14hba/PnOxM8zBjT+kxLBoz9Srtm5v5K
R0EFdCcB1JfPl0SHNGzhmbA81nXiTY7b3bfzsOTRot35m/SBWx0rRZdV2LCWi+YI
FDzATtyCsZtMFvA2xZff30w+5ytetDR+RMlpj5hUIqkIOWqq2mlJ3pRyY5u0G1oR
L12ZOfi/8R2PbAvwiae+ZOf4wrUcZNb6ahZhahWsmhbJ5q90AOIoe0ynW6OikvO4
Of3uV9mlsFSiksoo7J1CSlHDxR+6ZMmhxmxhnWcJ+y+zEdxPma5zwzGTQHaVqhDa
cxRTrcrsMW2eGsTLbkYG01bAQb1pEsa39Shvor3z4R9D+xt+vc4L96FuPubeC7NH
VNsrIIYW17yfpccAsEt4ljpd0QNi7m4g7hWu3sP0jiLpbWH+kd0=
=Sen4
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtrwACgkQTifTfDWI
cr/s1A//Za1Kihut0efPBa+jfRcqCthk0T8lJkRGZWka3VkGm554hcniKfQtVGwo
GLMJ+L7aqMLwjtXYVgVc0uoZ6osnTCphX7mU3Mg+S+wY2ELyOpmG7r4SPZlYGcT6
8rkILxzq96opXZTaKOXA+tzo5h1ZjY4m0BUJzkpzCSxJdavzmP7F3ZS3Fz02lMTo
Ge4emIqG3R4ctQmETJfZNPXqnMBmHPWfa0Gf0MMB8qgjCpay6DrUZgSx3sUhq5pj
uDMfwLRCI9BUu/Vi4eVOBatZAInezpXj1+91vFolc8zjdMso9MOwP0zhlflSsNyv
CsFP10OaW/S0JocIg4KuR/icD1xDO+xHHu06vCTwVk06sgqrnoOAFSq9lQWQ4+hi
TDeapSP8VqjKQZUlv4K9WRoop9hVdU/3QWv1LH9ODmWSmMEy/0+MuEOrDFNHaebG
jAxzUk0azpAWpv4mk6EWWfHjibDS990HZNvFjmckOpWQaAe2qyRnloiqTArcAuDg
jX6fPz3zcWIuG/a3NFONrMM2PiHDw+mQyG/ozz/3OWcGYbAGsf5A8dOULJAnsItY
MP3TbzPoOELHcZ/ma1JkTZ/p/H9Q4KMjF+jokem5FBcGSJccQbN2HvwuHkhwvrWz
vuSGuAAtVr7QCvQRaxJ8WhSNO4/IYAAZIOgUo8gHXem8rcn6XeQ=
=ZwzV
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr0ACgkQTifTfDWI
cr+0HQ/8CL+VIz4vXujakogGCfPqbaEbW7J0fjAxTfT1aO4X2QYWpDu14slLayKj
QVXCWoLqYK4YNDvbJEGrTBiTM/4moJMjSW6Fs4hOnPkb7qs0UxvYybolNAMAUj9z
uBfWfFVaOCffQlBmKZYOB+7gXtF3SCOBbr8d1U1L28apsN8BsPuAVbmBFuX0KzUx
tqCBZcCsXxYLxINi+3TZjwih/y2qtAFNs9YCf0KDU6BvrcBdf/pnJNm8hM/Z0wv4
4QCiFJLlUeabQ5+EK0tCPrRjlw9UFbJtzKOXgbsDYSfLj43dO44uAdvbdeQu90P2
YoCPF6ljU5kpMeyqLhcV+pkG0pTFALqMw3L2hihfjsOxoFF5UyAGp4WZKsU5yXVc
hl1J8Mm37vXCnNQSIlO8jXucvm7i5LOcvHOkAYFK76pkm06Z2oudnhcV55gwUeaa
mxUYC7XtDeOAQdyPmD9NR3xhlCE6x1Cavmm49afPN7dr2KNrHhu3Qg0RP76RnBRV
qnPvlAtSghUMAd38fHL4E0Em4bhHvlbkY53Qnwvmkr18tZZEddwRuHU5PqFZrIYl
6cf42hyThxmUqRUbtF8xffV7FR49PclL/6+h1AImbddh09G0Vz0sqreClei/rwXX
Pgq08MN3d8sqgi9xaeNnXn+CZ+GiMAxGZ9Uc34CFwjJ0kLHIk4E=
=Fn1O
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr0ACgkQTifTfDWI
cr8e/RAAlVKh7C5mcfcs6xQtOtcnyIOgWS5DUkTKAk0yo3E401MfR8K4FAKe70G0
m24xiE+4GzpMHDB8mry+QSWOiKoqDsBAl6zXKP+wixzJ24wX7ddDBY4jyAmvR21p
r9TfHL6QGOILsJzIP/enLbnzYSeZEcsoKfI2HahstYfnX4QMjywzjVSRDlIUmHDd
Us4IsE6Nyi+tcrVm5HHImGSuNzoYUqDvb8cl7o5RcrQmOHTR4G2lVxLFeZQhz78Z
UbKtmq1qAxSYKGg0/xHl0EGIevj5tPPOAUGrBwK4mLU3cQuhqEt8jqGd3R1ufwEo
fOk3UAtCM98F+JYbtkJMzrSTb41W/w31YcfbUPmlMETvZyd2Rxqa6n3+mSxHpEcF
2T8xcTxWDmeRhebsHj2fTO93tnD3KDAUWxpAaTPLIHL5tmNX8eMfWsbZl4x1qfsU
OaTLn77sapStqnUv89P0RVBq7WRnmgceWQ3YWSDmW+Re2AWYanA35rp/axQc25OC
1G2mGrT4uQTjSR9y9mzUCkmcQlyGKfCn54R+c7xoAtqCSxDq1BprhNcbLkAkRiNs
5DvQHwtWOCef4L0YimqfggzONrxhKJaQZNCxnBdKi0Ue1+NOz1l8P1bAOe1U81ZQ
1LLdl06YNI9CMp1hWH018cUbs8uRY7Eb21i6iVAqduW5yIDdtWA=
=cD6u
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr4ACgkQTifTfDWI
cr9P5g/9Gv/1TTZwTg2fWBYBH451PbFVmv1ZRkTbuyzqzaVU2/9YA/WfqfMe7rWA
Pg/AWUOXblcq/Tgm4v6mTzgWy80AQRiTsj7SWxMTn3xlIpRFQB5DgTy1cyBD5N50
Y83gZXWXfU6CK/8l+4h4N1JMZdSrSDWhwI/rGdU/PZ+AcvdbVkMYap3j0TZlNlx2
L9eyCVmO47IXy4AV8lAkP2DGCYIyZn5qwg3+TL0mm5AGJwlkde8JHCpTkiEjuAed
TNoTD7olglVNdy+2G9agRFRm1CCtBe7afcgT2HbmfGmFqIHlbewK37dHKX4ywdWe
0bCAMJZZBsLS+MR7p+1ZusK/qMDXKD30uL+xm/zqVtpFFWPUpi7Ghz/QsnNAPnaO
JOA8DszoyU68BDBPmHHRRBD0sksEUbz93MdgNz54Mmo4ZI4PIPiGJl6KNXSK+Evx
v14OFDPBJltbAaXqfbcJenZmuv4KGtaxHsSVt1kP9iZCcb6PMxc1fJYrPzznY/0x
tAspaooYIzrtbikjscVgRqdjmUiau8l8m+tzBGhx49Ai/bfLi68Adb5wksk1/9e3
yK1f1Wj1ywOnsM8J8Nsc5fk3qPaXqedA/8hjF15VjoPr/n+UFUpvwNLacNamcKdE
evqeMWcdJiLHrINxwRRlehq8Ae++2/MsfjAFZQUOiZ7693hErKc=
=NS5X
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr4ACgkQTifTfDWI
cr8rBBAAi8AqxyOsBp4m07TQSkXcQ/Xi72JpoMTXrDu+EgCdqydn64wiWx5UFl1Z
0at6SjNi5DPO7Dx/W3G1y5sABkopu0XVGLtcQfDc9K8J9b+6z6sM0qsGpVAUXF8l
tgKatb2EMEJeVjxzXWRj3/jvBsCWfMwhPUEpiKuTv0SY7yIJRqN60SGgtlNhBUls
7MIWvCCx+89+ueqp/xbbVQQnOdF89uyPwVp0pBD9wI+xO4VuxFlLqHj34AUv7Dhq
6RCzEbJ89yZ1wUlPVK5AOgyZDidJVj/30yoQ9lKNPFNPRAYHV5Ft/Fu5bqLiYESL
QE7YiGMnnSMtdyKDIEGFT1/VphtTiwyVSDLqWvkfQdLwSqVMrwr/eeQuBcGeiGfT
DpzCqsO9BciDnkzB4qR4dafoxzaoHpD94BTiNLLpnbumW93xJbopv4pHKDqsEgnD
SXo/wCJIENVwD+0NyB1oPW+R/DKHp7YMqfM+ZHcM9rnMfKqSO5zAw1KgL6rx8aOy
gdPlR0fNRLvtB8lcdALhRrqxYK9RVbLdCeI+ZhasvMHtVZQpLqC5RINb4eMK3ryn
pZ4RWCIP8XfP3aMUaHQcC2nIwwu3nayXkt7UqaJp7ulZP/5NBC0rJ3kf9AdUEWrZ
yr/b1CNP5R4xOHwk87JJtCctjbSqgoGcsjIgeKS3UuOMzxcwCRM=
=Rury
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr4ACgkQTifTfDWI
cr+lGw//Wrjejg4YFeYaOeDwaNIW65G9m/jKibWAWTd3sN8zzU/fl8hueYmQassI
LSBx5nDurnSaRmvpOKOwb4TokbI9j+7i++eIHzWfZ602v4M+iYeOyY7Joa5bnnFs
8uQ9lkUzMxyNVJ/znM17NIEf0Ip/TCwbdAfeCjYqAm/6QLjtpqG1l9TyVpG8veh2
DbNpl5hbKkB6hH3byXYzwHvqHxf1gCNqFZtCtZDuITCgWtNMgeckKAhvuDhLR+jB
w9rcE/uS9Wro6DFEWBc9Rzn7GlJV0kziJkMmS2/YbslhMZAyhXmI9Bznnsr45a/+
7XQ7MIzc9A2j3JlOGiKcS/5A62dfoKTysypVBJ9wrvBnAO80mHyccRPXDuHh6g9m
jb8mXRZ3gS0Daq1VrgNU2of3eF16F+tNiH6fhBDe13E5E1VwjQNNg+8jf7IQ4PT0
SEach1wN7FfjhDvBM9RKKzb9uV32YgYaIlUaNvd/1W9509bxVCjX2ZgV1Aktbs81
QczW0qKLNTObHCfhW40FV7jMZSW8FEfBIFR3u2BzimvZPQkA/KyyeyB5c8SdI0uj
wG16Ek8U/RoEsld6imrEFsL54l2kX8qPrbHnftBLDs6S9cPUKBeT753weT7Udyg6
TClVGt3ePquxXjptyk6+fA1dYYY062DKM9hyl+v9iO8xsKj+BRE=
=6gfO
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhDtr8ACgkQTifTfDWI
cr8msQ/+OsF0Cncpd4KtQmE+R9hofb1HnoLyDsMJ2FngrzPvtvTdQMgbmy/5aXag
6d+biBMRZsFWlmSJpXKMISIJWgcyT14oToJ1WeYFmv44B/ucoglKsLp4GbpBg7LG
tWWojO66em47Hja0iyU4W0Jf98EJc+dK6bqi3sOdwUuDpDpthw7tBI0bGDpR5SAM
BrJ6PpAH350Mn1cjFUBod+RyINTBKqpUKykOKXKVYN8/y/iCNqD7ZPXCj5YDISZ/
/VogqYhjFE+63z0rXsinWhOHy1RiS8p2dCB+9gzrAs9MpDSStRR4mQtX+CQT+jXB
9z8ETNfJ7rEquFnjStepyFnYGRSTikNEuYqWuDJsPbAXe+FZUHL8r3/ZbGXgeX2g
EpYPs3A/4HunFzVa3DrQBZeJmCEmzZNaqhlx9uJQoooisVODnrlZhrfLs36YJMVo
v92N0fwBw3mlFz9oLh4OSgyxyVPEGy02ELXkZIxgpecTcASTI6XZ14G94SfOfhDm
uRoGX9uKSFdLcHTAv+Zun64rVhTtg229F229r2v0Nn+hSbEKcw/1LkpDEX8vb+IG
RzlsytHgThhmgBn2xoGRP9ECTmz5sZPHdXFJ3Prb+rvCqxqhCglSIXfv6r72JXue
ATSY8l9quK4mTSO9Pc7KDvrReisHj7KMYVktdguLzX5S5P4OcSU=
=ZxSE
-----END PGP SIGNATURE-----