Skip to content

AnalogJ/gitmask

Repository files navigation

gitmask_view

Gitmask

Contribute Code Anonymously

Introduction

Gitmask is an open source hosted service that allows you to contribute to Github projects anonymously. It mimics a standard git remote, however all identifying information (author names, email and timestamps) embedded in your commits are stripped, before forwarding a squashed commit to the target repository as a pull request.

Features

  • Does not require a Github account - Gitmask is completely anonymous
  • Mimic's a standard git remote, allowing you to keep your normal development workflow and tools.
  • Automatically creates a pull request against target repository & branch
  • Hosted Open Source project. Use gitmask.com or run it yourself if you're privacy conscious.
  • Inline progress logs
  • Coming Soon Allows you to anonymously comment on Pull Requests opened by Gitmask, to provide context to your commits.

Why?

There's a number of reasons why you may want to contribute to a Github project anonymously.

  • Government - you may live in a country/region where the government tracks your contributions online
  • Career - you may be contributing to a project that your employer may not approve of
  • Security - you may want to contribute to a project that implies financial interest
  • Prove a point - you may want to write something controversial to start a discussion.
  • You just value your privacy.

Getting Started

git clone https://github.com/AnalogJ/gitmask.git
git checkout -b feat_branch
echo "update readme" >> README.md
git commit -am "Commits will be squashed and messages overwritten"
git remote add gitmask https://git.gitmask/v1/gh/AnalogJ/gitmask
git push gitmask feat_branch:master

# Gitmask will strip identifying information from your commits.
# You will be provided with a direct link to the pull request.

Configuration

Coming Soon

Testing

Coming Soon

Contributing

Gitmask is written as a serverless project, specifically configured for the AWS Lambda Python runtime

You can run it locally by doing the the following:

  • Create an AWS account where your gitmask run.

  • Install nodejs, python, serverless-framework and aws-cli.

  • Create and setup the AWS user for the deployment.

  • Issue your github access token

    • Go to github Settings > Developer settings > Personal access tokens
    • Run generate new token
      • scopes
        • public_repo
  • Configure following environment variables:

    Variable Value
    GITHUB_API_TOKEN github personal access token
    GITHUB_USER github username of the personal access token
    GITMASK_SERVICE Your own service name for gitmask, e.g. myown-gitmask-api.
    GITMASK_SERVICE_NORMALIZE Normalized value for GITMASK_SERVICE,removing special characters and captalize the first letter. e.g. Myowngitmaskapi
    CIRCLE_SHA1 Set the value retrieved by git rev-parse --short HEAD
  • Run deployment

    npm install -g serverless
    npm install
    pipenv install
    sls deploy
    
    • The URLs for endpoints are shown.
      • You can redisplay that with sls info

Serverless offline

sls requirements install
PYTHONPATH=~/Library/Caches/serverless-python-requirements/2674a9f8121c5816727ff9f31e4684c72875956b15f0bbb0eb0d69838d6ad47b_slspyc sls offline start

Useful Commands

  • GIT_TRACE=1 GIT_TRACE_PACKFILE=~/repos/gitmask/packfile.txt GIT_TRACE_CURL=2 GIT_CURL_VERBOSE=2 git push test beta2
  • git unpack-objects -r < ~/repos/gitmask/packfile.txt

References

Logo

hacker icon designed by sultan mohammed