Post-Local sync at 2025-06-09T21:04:01Z
This commit is contained in:
parent
fa2b591d9c
commit
f6c623b873
4 changed files with 828 additions and 11 deletions
|
@ -9,15 +9,23 @@ REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Gi
|
|||
REPO_NAME=$(basename "$REPO_PATH")
|
||||
GITFIELD_DIR="$REPO_PATH/.gitfield"
|
||||
WELL_KNOWN_DIR="$REPO_PATH/.well-known"
|
||||
DOCS_DIR="$REPO_PATH/docs"
|
||||
LOG_FILE="$GITFIELD_DIR/pushed.log"
|
||||
GITFIELD_MD="$REPO_PATH/GITFIELD.md"
|
||||
CANONICAL_META="$GITFIELD_DIR/canonical.meta"
|
||||
CANONICAL_MD="$GITFIELD_DIR/canonical.md"
|
||||
INDEX_JSON="$GITFIELD_DIR/index.json"
|
||||
WELL_KNOWN_JSON="$WELL_KNOWN_DIR/gitfield.json"
|
||||
DOCS_INDEX="$DOCS_DIR/index.html"
|
||||
DOCS_CSS="$DOCS_DIR/style.css"
|
||||
DOCS_REPOS_JSON="$DOCS_DIR/repos.json"
|
||||
DOCS_README="$DOCS_DIR/README.md"
|
||||
DOCS_NOJEKYLL="$DOCS_DIR/.nojekyll"
|
||||
DOCS_ROBOTS="$DOCS_DIR/robots.txt"
|
||||
DOCS_SITEMAP="$DOCS_DIR/sitemap.xml"
|
||||
TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
|
||||
SCRIPT_VERSION="1.1" # Updated version for metadata enhancements
|
||||
PRESERVE_META=${PRESERVE_META:-false} # Flag to preserve existing metadata (default: false)
|
||||
SCRIPT_VERSION="1.2" # Updated version for /docs and Radicle fixes
|
||||
PRESERVE_META=${PRESERVE_META:-false} # Flag to preserve existing metadata
|
||||
|
||||
# URLs for each platform
|
||||
CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME"
|
||||
|
@ -27,7 +35,7 @@ BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$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" # Fixed: removed rad:rad:
|
||||
RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz"
|
||||
|
||||
# Metadata configuration
|
||||
|
@ -38,7 +46,7 @@ MIRRORS=(
|
|||
"$FORGEJO_URL"
|
||||
"$CODEBERG_URL"
|
||||
"$GITEA_URL"
|
||||
"rad:$RADICLE_RID"
|
||||
"$RADICLE_RID" # Fixed: use rad: prefix directly
|
||||
)
|
||||
COMMIT_HASH=$(git -C "$REPO_PATH" rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
TREE_HASH=$(git -C "$REPO_PATH" rev-parse HEAD^{tree} 2>/dev/null || echo "unknown")
|
||||
|
@ -153,6 +161,10 @@ The GitField framework employs a recursive, multi-repository strategy to defend
|
|||
|
||||
The latest push operations are logged in [\`.gitfield/pushed.log\`](./pushed.log) for transparency and auditability.
|
||||
|
||||
## GitHub Pages
|
||||
|
||||
A public-facing canonical declaration is available at [docs/index.html](./docs/index.html) for enhanced discoverability and SEO.
|
||||
|
||||
_Auto-generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION)._
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$CANONICAL_MD"
|
||||
|
@ -239,7 +251,7 @@ The `.gitfield` directory contains metadata and logs for the GitField multi-repo
|
|||
|
||||
## Purpose
|
||||
|
||||
These files provide transparency, auditability, and discoverability, ensuring the project's persistence against deplatforming, censorship, or algorithmic manipulation.
|
||||
These files provide transparency, auditability, and discoverability, ensuring the project's persistence against deplatforming, censorship, or algorithmic manipulation. For a public-facing declaration, see [docs/index.html](../docs/index.html).
|
||||
|
||||
Generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION).
|
||||
EOF
|
||||
|
@ -248,11 +260,297 @@ EOF
|
|||
info "Generated and committed $readme_file"
|
||||
}
|
||||
|
||||
# ╭─────────────────────────────────────╮
|
||||
# │ DOCS DIRECTORY GENERATION │
|
||||
# ╰─────────────────────────────────────╮
|
||||
generate_docs_index() {
|
||||
info "Generating $DOCS_INDEX..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_INDEX" ]; then
|
||||
info "Preserving existing $DOCS_INDEX (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_INDEX" <<EOF
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GitField Sovereign Canonical Repository: $REPO_NAME</title>
|
||||
<meta name="description" content="The canonical repository for $REPO_NAME, part of the GitField recursive metadata strategy to ensure sovereign publishing and resilience against deplatforming.">
|
||||
<meta property="og:url" content="$CANONICAL_URL">
|
||||
<meta property="og:title" content="GitField Canonical Repository: $REPO_NAME">
|
||||
<meta property="og:description" content="A sovereign, multi-repository project by Mark Randall Havens and Solaria Lumis Havens, hosted canonically at $CANONICAL_URL.">
|
||||
<link rel="canonical" href="$CANONICAL_URL">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareSourceCode",
|
||||
"name": "$REPO_NAME",
|
||||
"url": "$CANONICAL_URL",
|
||||
"codeRepository": "$CANONICAL_URL",
|
||||
"description": "A sovereign, multi-repository project using the GitField recursive metadata strategy to ensure resilience, accessibility, and protection against deplatforming and censorship.",
|
||||
"sameAs": [
|
||||
$(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//')
|
||||
],
|
||||
"dateModified": "$TIMESTAMP",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "Mark Randall Havens"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "The Fold Within"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>GitField Sovereign Canonical Repository: <code>$REPO_NAME</code></h1>
|
||||
</header>
|
||||
<main>
|
||||
<section>
|
||||
<h2>Canonical Declaration</h2>
|
||||
<p>This repository, <code>$REPO_NAME</code>, is canonically hosted at:</p>
|
||||
<p><strong><a href="$CANONICAL_URL">$CANONICAL_URL</a></strong></p>
|
||||
<p>Maintained by <strong>Mark Randall Havens</strong> and <strong>Solaria Lumis Havens</strong>, this canonical source ensures sovereignty and resilience against deplatforming, censorship, and algorithmic manipulation.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Mirror Repositories</h2>
|
||||
<p>The project is mirrored across multiple platforms for redundancy and accessibility:</p>
|
||||
<ul>
|
||||
$(for mirror in "${MIRRORS[@]}"; do
|
||||
if [[ "$mirror" == rad:* ]]; then
|
||||
echo " <li><a href=\"https://app.radicle.xyz/nodes/$mirror\">Radicle: $mirror</a> (Decentralized, censorship-resistant)</li>"
|
||||
else
|
||||
echo " <li><a href=\"$mirror\">$mirror</a></li>"
|
||||
fi
|
||||
done)
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Metadata Manifest</h2>
|
||||
<p>Metadata for this project is available in:</p>
|
||||
<ul>
|
||||
<li><a href="../.gitfield/canonical.meta">.gitfield/canonical.meta</a> (Machine-readable JSON)</li>
|
||||
<li><a href="../.gitfield/canonical.md">.gitfield/canonical.md</a> (Human-readable Markdown)</li>
|
||||
<li><a href="../.gitfield/index.json">.gitfield/index.json</a> (Full manifest)</li>
|
||||
<li><a href="../.well-known/gitfield.json">.well-known/gitfield.json</a> (SEO metadata)</li>
|
||||
<li><a href="repos.json">repos.json</a> (Mirror list)</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Why Recursive Sovereignty Matters</h2>
|
||||
<p>The GitField framework distributes <code>$REPO_NAME</code> across decentralized (Radicle), self-hosted (Forgejo), and community-driven (Codeberg, Gitea) platforms, alongside mainstream services (GitHub, GitLab, Bitbucket). This recursive strategy defends against past deplatforming attempts by individuals such as Joel Johnson, Dr. Peter Gaied, and Andrew LeCody, ensuring the project's persistence and accessibility.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Source Links</h2>
|
||||
<p>Access the project's metadata and logs:</p>
|
||||
<ul>
|
||||
<li><a href="../.gitfield/pushed.log">Push Log</a> (Audit trail of sync operations)</li>
|
||||
<li><a href="../GITFIELD.md">GITFIELD.md</a> (Multi-repository strategy overview)</li>
|
||||
<li><a href="../.gitfield/README.txt">.gitfield/README.txt</a> (Metadata directory explanation)</li>
|
||||
</ul>
|
||||
</section>
|
||||
</main>
|
||||
<footer>
|
||||
<p>Mark Randall Havens & Solaria Lumis Havens · The Fold Within · 2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_INDEX"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/index.html at $TIMESTAMP" || warn "No changes to commit for $DOCS_INDEX"
|
||||
info "Generated and committed $DOCS_INDEX"
|
||||
}
|
||||
|
||||
generate_docs_css() {
|
||||
info "Generating $DOCS_CSS..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_CSS" ]; then
|
||||
info "Preserving existing $DOCS_CSS (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_CSS" <<EOF
|
||||
/* GitField Minimal Stylesheet for $REPO_NAME */
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 2rem;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
header {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
h1, h2 {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.4rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
a {
|
||||
color: #0066cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
ul {
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
code {
|
||||
background: #f4f4f4;
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 3px;
|
||||
}
|
||||
footer {
|
||||
text-align: center;
|
||||
margin-top: 3rem;
|
||||
font-size: 0.9rem;
|
||||
color: #666;
|
||||
}
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_CSS"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/style.css at $TIMESTAMP" || warn "No changes to commit for $DOCS_CSS"
|
||||
info "Generated and committed $DOCS_CSS"
|
||||
}
|
||||
|
||||
generate_docs_repos_json() {
|
||||
info "Generating $DOCS_REPOS_JSON..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_REPOS_JSON" ]; then
|
||||
info "Preserving existing $DOCS_REPOS_JSON (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_REPOS_JSON" <<EOF
|
||||
{
|
||||
"canonical_url": "$CANONICAL_URL",
|
||||
"mirrors": [
|
||||
$(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//')
|
||||
],
|
||||
"radicle": {
|
||||
"rid": "$RADICLE_RID",
|
||||
"peer_id": "$RADICLE_PEER_ID"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_REPOS_JSON"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/repos.json at $TIMESTAMP" || warn "No changes to commit for $DOCS_REPOS_JSON"
|
||||
info "Generated and committed $DOCS_REPOS_JSON"
|
||||
}
|
||||
|
||||
generate_docs_readme() {
|
||||
info "Generating $DOCS_README..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_README" ]; then
|
||||
info "Preserving existing $DOCS_README (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_README" <<EOF
|
||||
# GitField /docs Directory
|
||||
|
||||
The `/docs` directory hosts a public-facing, SEO-optimized canonical declaration for the \`$REPO_NAME\` repository, designed for GitHub Pages compatibility and enhanced discoverability.
|
||||
|
||||
## Files
|
||||
|
||||
- **index.html**: The canonical declaration page, including JSON-LD metadata and links to all mirrors.
|
||||
- **style.css**: Minimal stylesheet for elegant, recursive branding.
|
||||
- **repos.json**: Machine-readable list of the canonical URL and all mirror repositories.
|
||||
- **README.md**: This file, explaining the purpose of the `/docs` directory.
|
||||
- **.nojekyll**: Bypasses Jekyll processing for GitHub Pages.
|
||||
- **robots.txt**: Allows full indexing by search engine bots.
|
||||
- **sitemap.xml**: Auto-generated sitemap for improved SEO.
|
||||
|
||||
## Purpose
|
||||
|
||||
This directory ensures the \`$REPO_NAME\` project is discoverable via search engines and accessible to humans and bots. It declares the canonical repository at [$CANONICAL_URL]($CANONICAL_URL) and links to all mirrors, reinforcing the GitField recursive metadata strategy for sovereign publishing.
|
||||
|
||||
Generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION).
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_README"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/README.md at $TIMESTAMP" || warn "No changes to commit for $DOCS_README"
|
||||
info "Generated and committed $DOCS_README"
|
||||
}
|
||||
|
||||
generate_docs_nojekyll() {
|
||||
info "Generating $DOCS_NOJEKYLL..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_NOJEKYLL" ]; then
|
||||
info "Preserving existing $DOCS_NOJEKYLL (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
touch "$DOCS_NOJEKYLL"
|
||||
git -C "$REPO_PATH" add "$DOCS_NOJEKYLL"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/.nojekyll at $TIMESTAMP" || warn "No changes to commit for $DOCS_NOJEKYLL"
|
||||
info "Generated and committed $DOCS_NOJEKYLL"
|
||||
}
|
||||
|
||||
generate_docs_robots() {
|
||||
info "Generating $DOCS_ROBOTS..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_ROBOTS" ]; then
|
||||
info "Preserving existing $DOCS_ROBOTS (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_ROBOTS" <<EOF
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Sitemap: /sitemap.xml
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_ROBOTS"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/robots.txt at $TIMESTAMP" || warn "No changes to commit for $DOCS_ROBOTS"
|
||||
info "Generated and committed $DOCS_ROBOTS"
|
||||
}
|
||||
|
||||
generate_docs_sitemap() {
|
||||
info "Generating $DOCS_SITEMAP..."
|
||||
mkdir -p "$DOCS_DIR"
|
||||
if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_SITEMAP" ]; then
|
||||
info "Preserving existing $DOCS_SITEMAP (--preserve-meta enabled)"
|
||||
return
|
||||
fi
|
||||
cat > "$DOCS_SITEMAP" <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>$CANONICAL_URL</loc>
|
||||
<lastmod>$TIMESTAMP</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
$(for mirror in "${MIRRORS[@]}"; do
|
||||
if [[ "$mirror" != rad:* ]]; then
|
||||
echo " <url>"
|
||||
echo " <loc>$mirror</loc>"
|
||||
echo " <lastmod>$TIMESTAMP</lastmod>"
|
||||
echo " <changefreq>weekly</changefreq>"
|
||||
echo " <priority>0.8</priority>"
|
||||
echo " </url>"
|
||||
fi
|
||||
done)
|
||||
</urlset>
|
||||
EOF
|
||||
git -C "$REPO_PATH" add "$DOCS_SITEMAP"
|
||||
git -C "$REPO_PATH" commit -m "Generated docs/sitemap.xml at $TIMESTAMP" || warn "No changes to commit for $DOCS_SITEMAP"
|
||||
info "Generated and committed $DOCS_SITEMAP"
|
||||
}
|
||||
|
||||
# ╭─────────────────────────────────────╮
|
||||
# │ INITIAL SETUP │
|
||||
# ╰─────────────────────────────────────╮
|
||||
mkdir -p "$GITFIELD_DIR"
|
||||
mkdir -p "$WELL_KNOWN_DIR"
|
||||
mkdir -p "$GITFIELD_DIR" "$WELL_KNOWN_DIR" "$DOCS_DIR"
|
||||
|
||||
if [ ! -f "$LOG_FILE" ]; then
|
||||
echo "# Push Log for $REPO_NAME" > "$LOG_FILE"
|
||||
|
@ -279,7 +577,7 @@ The \`$REPO_NAME\` project employs a multi-repository strategy across seven dist
|
|||
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
|
||||
- **RID**: [$RADICLE_RID](https://app.radicle.xyz/nodes/$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.
|
||||
|
@ -339,9 +637,9 @@ The decision to maintain multiple repositories stems from the need to safeguard
|
|||
- **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**: Radicle’s decentralized nature and Forgejo’s self-hosted infrastructure ensure the project cannot be fully censored or controlled by any single entity.
|
||||
- **Diversity**: Each platform’s unique features (e.g., GitHub’s community, GitLab’s CI/CD, Bitbucket’s integrations, Radicle’s decentralization, Forgejo’s self-hosting, Codeberg’s community-driven model, Gitea’s lightweight efficiency) enhance the project’s functionality and reach.
|
||||
- **Transparency**: Metadata snapshots in the \`.gitfield\` directory provide a verifiable record of the project’s state across all platforms.
|
||||
- **Transparency**: Metadata snapshots in the \`.gitfield\` directory and public-facing documentation in the \`/docs\` directory provide a verifiable record of the project’s state across all platforms.
|
||||
|
||||
This multi-repository approach, bolstered by Forgejo’s 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 Forgejo’s sovereign hosting and GitHub Pages’ discoverability, 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.
|
||||
|
||||
---
|
||||
|
||||
|
@ -352,6 +650,7 @@ This multi-repository approach, bolstered by Forgejo’s sovereign hosting, refl
|
|||
- **Well-Known Metadata**: SEO-friendly metadata with Schema.org JSON-LD is available in [\`.well-known/gitfield.json\`](./.well-known/gitfield.json).
|
||||
- **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, commit hash, and RID/URL of every push operation across all platforms, providing a transparent audit trail.
|
||||
- **GitField Directory**: The \`.gitfield\` directory contains additional metadata and platform-specific sigils (e.g., \`github.sigil.md\`). See [\`.gitfield/README.txt\`](./.gitfield/README.txt) for details.
|
||||
- **GitHub Pages**: A public-facing, SEO-optimized canonical declaration is available in [\`docs/index.html\`](./docs/index.html), with additional metadata in [\`docs/repos.json\`](./docs/repos.json) and a sitemap in [\`docs/sitemap.xml\`](./docs/sitemap.xml).
|
||||
- **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 → Codeberg → Gitea → GitLab → Bitbucket → GitHub**. This prioritizes Radicle’s decentralized, censorship-resistant network as the primary anchor, followed by Forgejo’s sovereign, self-hosted infrastructure, Codeberg’s community-driven platform, Gitea’s lightweight efficiency, GitLab’s robust DevOps features, Bitbucket’s enterprise redundancy, and GitHub’s broad visibility, ensuring a resilient and accessible metadata chain.
|
||||
|
||||
|
@ -359,7 +658,6 @@ This multi-repository approach, bolstered by Forgejo’s sovereign hosting, refl
|
|||
|
||||
_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"
|
||||
|
@ -442,6 +740,13 @@ run_push_cycle() {
|
|||
generate_index_json
|
||||
generate_well_known_json
|
||||
generate_gitfield_readme
|
||||
generate_docs_index
|
||||
generate_docs_css
|
||||
generate_docs_repos_json
|
||||
generate_docs_readme
|
||||
generate_docs_nojekyll
|
||||
generate_docs_robots
|
||||
generate_docs_sitemap
|
||||
}
|
||||
|
||||
# ╭─────────────────────────────────────╮
|
||||
|
@ -478,6 +783,13 @@ generate_canonical_md
|
|||
generate_index_json
|
||||
generate_well_known_json
|
||||
generate_gitfield_readme
|
||||
generate_docs_index
|
||||
generate_docs_css
|
||||
generate_docs_repos_json
|
||||
generate_docs_readme
|
||||
generate_docs_nojekyll
|
||||
generate_docs_robots
|
||||
generate_docs_sitemap
|
||||
|
||||
# Run push cycles
|
||||
run_push_cycle 1
|
||||
|
@ -492,3 +804,4 @@ info "🔗 View canonical metadata: $CANONICAL_META"
|
|||
info "🔗 View canonical declaration: $CANONICAL_MD"
|
||||
info "🔗 View index manifest: $INDEX_JSON"
|
||||
info "🔗 View well-known metadata: $WELL_KNOWN_JSON"
|
||||
info "🔗 View GitHub Pages: $DOCS_INDEX"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue