https://github.com/heroickatora/git-hackme
Spontaneous collaboration in local networks, perfect with `mob`
https://github.com/heroickatora/git-hackme
Last synced: about 2 months ago
JSON representation
Spontaneous collaboration in local networks, perfect with `mob`
- Host: GitHub
- URL: https://github.com/heroickatora/git-hackme
- Owner: HeroicKatora
- Created: 2024-05-11T23:10:16.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-19T19:48:22.000Z (7 months ago)
- Last Synced: 2025-03-25T14:51:20.948Z (2 months ago)
- Language: Rust
- Size: 73.2 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
Git Hackme is intended for spontaneous collaboration with `mob`¹.
It will turn a local repository into an collaboration server, allowing login
from your current local network via a public SSH certificate. It intended use
case are maker meetup events where someone's project is worked on by a trusted
group which do not have or need access to the authoritative code repository.## Quick start for contributing
See the web page shared by a hosting person. Boils down to something similar
to the commands:```
# Only once and for updates:
cargo install [email protected]# Adjust as listed on the hosting person's web page:
git hackme clone "http://[email protected]:8000/flip-fix-blade-fantasy"
```## Quick start for sharing
```
# Only once and for updates:
cargo install [email protected]
git hackme init# Then, assuming you're in a git repository:
git hackme share
```Then spin up a web server such as `python -m http.server` to the indicated path
and see its instructions for joining. Use `init` anytime to regenerate the HTML
index page etc.¹Note that the `mob` program creates a temporary branch, derived from the main
branch of which it is created. This effectively mitigates an issue with sharing
a local repository, which is that one can not pushed to a branch checked-out in
a non-bare git remote. One simply has to ensure that `mob stop` is ran by the
hosting person.## Known and Fixed Problems (beta.8)
- [ ] Sharing an existing project does not *always* update the mnemonic folder.
This is an optimization but might cause the key file to be out-of-date or its
signature to be invalid. We should somehow validate freshness.- [x] The share command should check if SSH is running and reachable, not only
an HTTP server. This can detect if the CA is changed or the sshd daemon down.- [x] The original repository name could be used as the target directory name,
avoid confusion when looking through previous repositories.- [x] The index page should copy repository ~~descriptions and~~ names.
- [x] The index page should get better UX optimized for sharing. The color
scheme should remain readable when text is selected since this is the most
basic workflow. There should be a 'Copy' button.- [x] The shell doesn't diagnose a missing directory. If the remote deletes or
unshares the repository it should nudge you towards the `reset` command.- [x] Does not support OS-X.
- [x] The `unshare` command is not yet implement, delete the mnemonic directory
in the runtime directory as a workaround. (Slightly problematic, does not
validate against reuse of that mnemonic).## Unsupported Problems (please contribute)
- [ ] Does not support the Windows target, even for contributors. I have no
clue how to programmatically write a key with proper permissions and
configure its use. Maybe just WSL the problem away.## Requirements
You need:
- Linux or OS X
- `openssh` and `ssh-keygen`
- `git`