{"id":46487390,"url":"https://github.com/fire2a/on-boarding","last_synced_at":"2026-03-06T09:38:28.673Z","repository":{"id":266111735,"uuid":"896055252","full_name":"fire2a/on-boarding","owner":"fire2a","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-01T22:55:35.000Z","size":20,"stargazers_count":0,"open_issues_count":7,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-01T23:33:49.426Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fire2a.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-29T13:02:53.000Z","updated_at":"2025-06-26T17:27:35.000Z","dependencies_parsed_at":"2024-12-02T16:53:49.922Z","dependency_job_id":"45a2920b-b6f3-4e89-9d17-150f2b58058a","html_url":"https://github.com/fire2a/on-boarding","commit_stats":null,"previous_names":["fire2a/on-boarding"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fire2a/on-boarding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fire2a%2Fon-boarding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fire2a%2Fon-boarding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fire2a%2Fon-boarding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fire2a%2Fon-boarding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fire2a","download_url":"https://codeload.github.com/fire2a/on-boarding/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fire2a%2Fon-boarding/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30169278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-06T09:38:27.945Z","updated_at":"2026-03-06T09:38:28.632Z","avatar_url":"https://github.com/fire2a.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fire2a-on-boarding\n\n- Required ![git](#git)\n- Intro to ![command line interfaces](#intro-to-command-line-interfaces)\n- Intro to ![containers](#containers)\n\n## git\n\u003cimg src=\"https://imgs.xkcd.com/comics/git.png\"  alt='cannot load image' width=\"400px\" \u003e\n\n### main usage\n```bash\ngit clone git@github.com:fire2a/C2F-W.git\ncd C2F-W\n\n# alternative A\ngit pull\n# B\ngit fetch \ngit switch [-c] branch-name-is-at-least-a-half-sentence-explaining-the-feature/issue [main]\n\ngit diff\ngit add new_or_changed_text_file\ngit commit -m \"sentence that explains the purpose of the change\"\n\ngit push [--set-upstream origin my-feature-branch]\n\n# contribute\nfirefox https://github.com/fire2a/C2F-W/compare/main...my-feature-branch\n```\n#### secondary\n```bash\ngit status\ngit log\ngit branch -a\ngit remote -v\n```\n\n### A learning path\n\n1. (what is git again?) watch any video introduction, or play the game: https://ohmygit.org/\n2. (novice) [Get started with GitHub documentation](https://docs.github.com/en/get-started/)\n3. _(do once)_ [SSH Authentication](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)\n4. __(essential, must be understood)__ [Contributing to a project](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project)\n5. [official docs](https://git-scm.com/doc): really good cheat sheets and official manual\n6. Learn how your IDE implements git (example: [VSCode](https://code.visualstudio.com/docs/sourcecontrol/overview) or [Unix is my IDE](https://blog.sanctum.geek.nz/series/unix-as-ide/)); to do interactive and/or visual diffs.\n   \n#### further research\n- setup `.gitconfig`\n- view differences: `diff` between branches, commits, tags...\n- search into the whole tree `git log --grep \u003cregex\u003e [branches]`\n- `merge`; branches, 2-3 way\n- `cherry-pick`\n- `git remote set-url origin git@...`\n- never `git reset ...`\n- search all code (all branches) `git grep -e 'your_search_string' $(git rev-list --all)`\n\n### coding practices 0\n- the best code/document is not the smartest one, but the most legible\n- write/name everything as for your future self, when you'd forgotten about it \u0026 context\n- avoid typing errors by typing as little as possible vs copy/paste\n  \n### our github organization\n1. Every team member has write as default privileges. Be respectful of other people branches\n2. When creating a new public repo (can't be done with private), create a protection rule for the main branch:\n   - requiring pull requests\n   - disallowing push\n   \u003cimg src=\"https://github.com/user-attachments/assets/573f21f8-b666-4164-9baa-9bc511051c0b\"  alt='cannot load image' width=\"400px\" \u003e\n\n## Intro to command line interfaces\n- https://blog.sanctum.geek.nz/series/unix-as-ide/\n- https://www.geeksforgeeks.org/linux-tutorial/\n\n## containers\n\u003cimg src=\"https://imgs.xkcd.com/comics/containers.png\"  alt='cannot load image' width=\"400px\" \u003e\n- How to get (administration) power without the responsability (of destroying everyones work/dependencies)?\n- How to make truly portable code, without having to manage dependencies?\n\nBasic learning path:\n1. Create a fairly empty container, develop inside (fail and start over) until you get a list of working dependencies. Share the configuration with fire2a admin to make available at OS level.\n2. Containerized developement allows you to divide responsabilities over services and take advantage of ready to use solutions\n\n### Shortest tutorial\n#### TL;DR\n```bash\ncd containers # wherever a Containerfile is located\npodman build -t my_debian_image . # BUILD here\npodman run -d -v $(pwd)/compartido:/root/. --name my_debian_container my_debian_image # START DETACHED (-D) CONTAINER, sharing $pwd/compartido folder (no symlink)\npodman exec -it my_debian_container bash # CONNECT INTERACTIVELY\n\nroot@...$ apt install ... # now you can be root\n```\n#### tutorial\n- `podman` is newer, free and doesn't require admin privileges like `docker`\n- in every code that calls _ you can replace with _, and it will mostly work:\n   - `docker` to `podman`\n   - `Dockerfile` to `Containerfile`\n   - `docker-compose` to `podman-compose`\n```bash\n#\n# IMAGES\n#\npodman images # list my images\npodman pull debian:stable # DOWNLOAD (OR UPDATE) A BASE IMAGE\n\n# most popular image site: https://hub.docker.com/search/\n# sometimes you got to put the full path, examples\npodman pull docker.io/library/pandoc/latex:latest\npodman pull docker.io/3liz/qgis-map-server\n\npodman rmi \u003crepository or id\u003e # remove image\n# images being used in containers cannot be removed\n# periodically remove unused images, the can take a lot of space\n\n#\n# CONTAINERS\n#\npodman build -t my_debian_image -f Containerfile # BUILD \n# specifying name and context:\n# -t --tag name to apply to the built image\n# -f --file pathname or URL of a Dockerfile (can be skipped and ./Containerfile is used)\n\npodman run -d --name my_debian_container my_debian_image # START DETACHED (-D) CONTAINER \n# from my_debian_image, name it my_debian_container\n\npodman ps -a # lists -a(all) running containers\npodman start/stop/rm \u003ccontainer id or name\u003e # start stop or remove container\n\npodman exec -it my_debian_container bash # CONNECT INTERACTIVELY\n\n# SHARING FILES\n\n# 1. copy file from and to a running container\npodman cp README.md my_debian_container:/root/.\n# same syntax as scp, doesn't support recursive (-r) or glob (*)\n\n# 2. mount at start\npodman run -v $(pwd)/compartido:/root/. -d --name my_debian_container my_debian_image\n\n# 3. if volume doesn't exist it get's created\npodman run -v my_volume:/root/. -d --name my_debian_container2 my_debian_image\npodman volume ls # list volumes\npodman volume inspect \u003cvolume name or id\u003e # check properties\nls $(podman volume inspect my_volume --format \"{{.Mountpoint}}\") # check contents (read only or container crashes)\npodman volume rm \u003cvolume name or id\u003e\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffire2a%2Fon-boarding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffire2a%2Fon-boarding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffire2a%2Fon-boarding/lists"}