Giter Site home page Giter Site logo

dgit's People

Contributors

brandonwestcott avatar cap10morgan avatar icarusz avatar littlezigy avatar mehulagg avatar squadrick avatar zonotope avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dgit's Issues

git fetch says "object not found"

Steps to reproduce:

  1. Clone this repo
  2. Add a dgit remote: git remote add dorigin dgit://quorumcontrol/decentragit-remote
  3. Fetch from it: git fetch dorigin

Result:

Git says object not found and exits with status 128.

Expected result:

No output and exit with status 0.

Name clash with Debian "dgit" tool

Hi. I'm sorry to have to inform you that the name you have chosen is the same as the name of my "dgit" tool for Debian packaging uploads with git.

My dgit has existed since 2013[2] and is well-established. By its nature it is useful in Debian and Debian derivatives - is in Ubuntu too[3]. It is important for its use that it be a short command on PATH[1]. At the time I chose the name I searched to see if there were other users that would be a problem. I didn't see any.

I see from the git history that your project was started in February this year and was renamed to "dgit" about two weeks ago. I'm sorry to have to ask this, but, would it be possible for you to rename your project again? I recommend searching the package trackers for Guix, Arch, Fedora and Debian to see what you might be clashing with. (General search engines are getting worse and worse for this.)

Regards,
Ian.

[1] https://manpages.debian.org/buster/dgit/dgit.1.en.html
[2] https://tracker.debian.org/pkg/dgit
https://tracker.debian.org/pkg/dgit/news/?page=8
[3] https://launchpad.net/ubuntu/+source/dgit

Cloning non-existent repository creates empty working directory

Steps to reproduce:

  1. Install dgit
  2. Clone any non-existent repo, e.g. git clone dgit://nope/not-real

Results:

git outputs warning: You appear to have cloned an empty repository. and the not-real directory exists with a .git subdirectory.

Expected:

The not-real directory is not created.

git dg init fails with "runtime error: invalid memory address or nil pointer dereference"

Hello to all,

Summary

Passionate about peer to peer systems, I really wanted to test dgit this morning... but it doesn't seem to work as expected in the documentation : dgit crashes at the very first command with the log below.

I am using dgit under Debian Linux with a x86_64 machine, I compiled dgit myself. I wanted to de-centralize the following repository : https://github.com/glenux/teaching-boilerplate .

You will find below all the details. Tell me if you need anything more to help debugging.

Technical details

Runtime log

$ git dg init
What decentragit username would you like to use? dguser

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xc56ee4]

goroutine 1 [running]:
github.com/quorumcontrol/dgit/tupelo/tree.Find({0x1120938, 0xc00065a080}, 0xc000517100, {0xc000a18500, 0xc00012b030})
        /home/user/src/Contrib/dgit/tupelo/tree/tree.go:58 +0x84
github.com/quorumcontrol/dgit/tupelo/namedtree.(*Generator).Find(0xc00000e3f0, {0x1120938, 0xc00065a080}, {0xc0001fa0a0, 0x0})
        /home/user/src/Contrib/dgit/tupelo/namedtree/namedtree.go:75 +0x5a
github.com/quorumcontrol/dgit/tupelo/usertree.Find({0x1120938, 0xc00065a080}, {0xc0001fa0a0, 0x0}, 0x100000000000000)
        /home/user/src/Contrib/dgit/tupelo/usertree/usertree.go:44 +0x6c
github.com/quorumcontrol/dgit/initializer.(*Initializer).createOrRecoverPrivateKey(0xc00069b9b0, {0x1120938, 0xc00065a080}, {0xc0001fa0a0, 0x6})
        /home/user/src/Contrib/dgit/initializer/initializer.go:307 +0x49
github.com/quorumcontrol/dgit/initializer.(*Initializer).getAuth(0xc00069b9b0, {0x1120938, 0xc00065a080})
        /home/user/src/Contrib/dgit/initializer/initializer.go:192 +0x150
github.com/quorumcontrol/dgit/initializer.(*Initializer).Init(0xc00069b9b0, {0x1120938, 0xc00065a080}, {0x0, 0x0, 0x0})
        /home/user/src/Contrib/dgit/initializer/initializer.go:79 +0x2c
github.com/quorumcontrol/dgit/initializer.Init({0x1120938, 0xc00065a080}, 0xc0004e5a76, {0x18cab80, 0x28a, 0x203000})
        /home/user/src/Contrib/dgit/initializer/initializer.go:72 +0xf3
github.com/quorumcontrol/dgit/cmd.glob..func1(0x17542c0, {0x18cab80, 0x0, 0x0})
        /home/user/src/Contrib/dgit/cmd/init.go:77 +0x2cc
github.com/spf13/cobra.(*Command).execute(0x17542c0, {0x18cab80, 0x0, 0x0})
        /home/user/src/Go/pkg/mod/github.com/spf13/[email protected]/command.go:830 +0x5f8
github.com/spf13/cobra.(*Command).ExecuteC(0x1754040)
        /home/user/src/Go/pkg/mod/github.com/spf13/[email protected]/command.go:914 +0x2fc
github.com/spf13/cobra.(*Command).Execute(...)
        /home/user/src/Go/pkg/mod/github.com/spf13/[email protected]/command.go:864
github.com/quorumcontrol/dgit/cmd.Execute()
        /home/user/src/Contrib/dgit/cmd/root.go:26 +0x2a
main.main()
        /home/user/src/Contrib/dgit/main.go:11 +0x4a

Execution environment

System

$ uname -a
Linux dione 5.15.0-2-amd64 #1 SMP Debian 5.15.5-2 (2021-12-18) x86_64 GNU/Linux

Compiler

$ go version
go version go1.17.5 linux/amd64

Private key doesn't get stored in keychain when running dgit init over SSH to macOS host

When I run dgit init over an SSH connection to a macOS host, it says it created a private key for me*, but when I search that machine's keychain for dgit I get no results.

Running dgit init on the same machine in a local terminal (via screenshare) works. I.e. the same messages are printed but the dgit.default key exists in the keychain afterwards.

  • Specifically it says: A private key has been generated for you and is stored in macOS Keychain Access.

Upload packfiles directly to Sia

This should improve performance by uploading packfiles directly to Sia Skynet rather than parsing them into individual objects and uploading those. We'll have to keep track of what's in each packfile in the chaintree (see the filesystem storage in go-git for reference). Presumably we'll want to cache them after downloading so that any other object read requests for things in the same packfile will already have what they need. That should improve cloning / pulling performance quite a bit.

Add account recovery

A few users, including internal dgit team, have for one reason or another lost access to the repo ChainTrees dues to a loss of the private key. We should add a seed word recovery when a new username is created.

Questions

Hi, it is so wonderful you have made this.

Briefly listing other similar projects: git-ssb, gittorrent, git-remote-bsv (hacked up by me, unaware of dgit). dgit looks very refined compared to these othet options.

Do you have time to answer any of these questions? I'm afraid I don't speak golang well.

  • Are there quick instructions anywhere for running a tupelo node?

  • Does the protocol provide for someone to write software that enumerates all dgit repositories?

  • Are username conflicts already handled by the tupelo protocol?

  • Does dgit connect to a local tupelo node, speak the tupelo network protocol itself, or connect to a remote api?

  • What digest algorithm(s) are used to verify the skynet-delivered git repo is correct?

  • Does tupelo protect that git repository hashes are unchanged in public history if all nodes using them are compromised by an adversary? (i.e. is a hash sustained by peers who don't use dgit?)

dgit init commands gives : "Error with keyring: Specified keyring backend not available" on WSL 1

Hello,
I wanted to play a bit with dgit to see how it is.

I have created an empty repo with git init. I added a file and committed it.
Then I used dgit init and got the aforementioned error message
Error with keyring: Specified keyring backend not available.

I also tried to clone an existing repo and to run dgit init inside it but I got the same error.

I am using dgit version v0.0.11-alpha

Is there a specification?

I would like to understand deeply how this works, is there a specification or something analogous?

Add collaborators to repos

Currently the only way to add an additional collaborators to dgit repos is through direct ChainTree modification. dgit should expose basic collaborator add/remove functionality.

cannot join developer chat on gitter without giving up civil rights

From GitLab's Gitter TOS:

Any dispute, controversy or claim arising out of or relating to this Agreement, including the formation, interpretation, breach or termination thereof, including whether the claims asserted are arbitrable, which has not been resolved via the process laid out in Dispute resolution will then be referred to and finally determined by arbitration in accordance with the Arbitration Rules of the Netherlands Arbitration Institute. The arbitral tribunal shall be composed of one arbitrator. The place of arbitration shall be Utrecht or Amsterdam, The Netherlands. The arbitral procedure shall be conducted in the English language. Judgment upon the award rendered by the arbitrator(s) may be entered in any court having jurisdiction thereof.

Requiring your community to give up their civil rights as a prerequisite to participation by demanding that they enter into a large and abusive legal contract with a third party is not befitting an organization that promotes decentralization.

May I suggest a self-hosted Mattermost? I'd be happy to run/admin one for your project if you'd like.

deleting remote branch not working

git push origin --delete master                                                                                                                                                                                       1 ↵
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x448a7dd]

goroutine 1027 [running]:
github.com/jbenet/go-context/io.(*ctxReader).Read.func1(0xc00028f100, 0xc000437000, 0x1000, 0x1000, 0xc00030f320)
	/Users/bwestcott/working/go/pkg/mod/github.com/jbenet/[email protected]/io/ctxio.go:108 +0x2d
created by github.com/jbenet/go-context/io.(*ctxReader).Read
	/Users/bwestcott/working/go/pkg/mod/github.com/jbenet/[email protected]/io/ctxio.go:107 +0xc4
error: failed to push some refs to 'dgit://quorumcontrol/dgit

push does not start uploading with git-lfs enabled

git push dgit master command failed before git-lfs uploading started.

Uploading LFS objects: 0% (0/1), 0 B | 0 B/s, done.
batch request: ssh: Could not resolve hostname dgit: nodename nor servname provided, or not known: exit status 255

Output some progress stuff during clone, push, etc.

When cloning over SSH git outputs things like this:

$ git clone [email protected]:cap10morgan/itafbg.git itafbg2
Cloning into 'itafbg2'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 84 (delta 2), reused 8 (delta 2), pack-reused 71
Receiving objects: 100% (84/84), 24.71 KiB | 8.24 MiB/s, done.
Resolving deltas: 100% (31/31), done.

It would be cool if dgit output some stuff there too, especially if it was both useful info and highlighted the decentralized nature of what it was doing somehow.

dgit init "Is that ok? Y/n" doesn't appear to default to "Y" as the capitalization implies

I ran dgit init and just hit enter at this prompt because the "Y" was capitalized (indicating it was the default response if none was given). However, the output after that was:

You are setup and ready to roll with dgit.
Just use git as you usually would and enjoy a fully decentralized repo.

If you would like to clone this dgit repo on another machine, simply run 'git clone dgit://quorumcontrol/dgit-test-repo-wes3'.

If you use GitHub for this repo, we recommend adding a dgit action to keep your post-PR branches in sync on dgit.
You can find the necessary action here:
https://github.com/quorumcontrol/dgit-github-action

Finally for more docs or if you have any issues, please visit our github page:
https://github.com/quorumcontrol/dgit

But git remote -v indicated there were no remotes configured.

However, running dgit init again and answering the Is that ok? prompt with y instead produced this output:

Success, dgit is now accessible under the 'dgit' remote.
'git fetch dgit' will work flawlessly from your decentralized repo.

You are setup and ready to roll with dgit.
Just use git as you usually would and enjoy a fully decentralized repo.

If you would like to clone this dgit repo on another machine, simply run 'git clone dgit://quorumcontrol/dgit-test-repo-wes3'.

If you use GitHub for this repo, we recommend adding a dgit action to keep your post-PR branches in sync on dgit.
You can find the necessary action here:
https://github.com/quorumcontrol/dgit-github-action

Finally for more docs or if you have any issues, please visit our github page:
https://github.com/quorumcontrol/dgit

That "Success..." bit was unique to the second run. And after this run, git remote -v showed a dgit remote had been created.

support arm architechtures

Please can you look to additionally support builds for arm architectures including both arm7 and arm64??

panic on git pull

# Installed via Homebrew
$ dgit version
dgit version v0.0.11-alpha

$ git init
Initialized empty Git repository in /tmp/.git/

$ dgit init
What is your full repo name? demo/demo█

dgit would like to add the 'dgit' remote to this repo so that you can fetch directly from dgit.

Is that ok? y█

Success, dgit is now accessible under the 'dgit' remote.
[..]

$ git remote -v
dgit	dgit://demo/demo (fetch)
dgit	dgit://demo/demo (push)

$ git pull dgit
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x49033c8]

goroutine 1 [running]:
github.com/quorumcontrol/dgit/storage/siaskynet.(*ObjectStorage).EncodedObject(0xc0008a67c0, 0x8cc43ca31694a381, 0xbd6ff0d74a50780f, 0x3fafe2a349, 0x4816b48, 0x30, 0x30, 0xc0008e1470)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/storage/siaskynet/object.go:313 +0x678
github.com/go-git/go-git/v5/plumbing/revlist.processObject(0x2d70d870, 0xc0007a48c0, 0xf8cc43ca31694a3, 0x49bd6ff0d74a5078, 0xc03fafe2a3, 0xc0008e1470, 0xc0005c32d8, 0x0, 0x0, 0x0, ...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/revlist/revlist.go:88 +0xc0
github.com/go-git/go-git/v5/plumbing/revlist.objects(0x2d70d870, 0xc0007a48c0, 0xc0007ac000, 0x1, 0x1, 0x0, 0x0, 0x0, 0xc0004cf300, 0x0, ...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/revlist/revlist.go:63 +0x264
github.com/go-git/go-git/v5/plumbing/revlist.ObjectsWithStorageForIgnores(0x2d70d870, 0xc0007a48c0, 0x2d70d870, 0xc0007a48c0, 0xc0007ac000, 0x1, 0x1, 0x0, 0x0, 0x0, ...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/revlist/revlist.go:42 +0x124
github.com/go-git/go-git/v5/plumbing/revlist.Objects(...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/revlist/revlist.go:24
github.com/go-git/go-git/v5/plumbing/transport/server.(*upSession).objectsToUpload(0xc0008a67e0, 0xc00015fec0, 0x0, 0x0, 0x0, 0x0, 0x4a84600)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/transport/server/server.go:184 +0x1aa
github.com/go-git/go-git/v5/plumbing/transport/server.(*upSession).UploadPack(0xc0008a67e0, 0x4e8e9c0, 0xc0002e7f00, 0xc00015fec0, 0x0, 0x0, 0x0)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/plumbing/transport/server/server.go:160 +0x128
github.com/go-git/go-git/v5.(*Remote).fetchPack(0xc0005c3930, 0x4e8e9c0, 0xc0002e7f00, 0xc0005c3b38, 0x4e87940, 0xc0008a67e0, 0xc00015fec0, 0x0, 0x0)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/remote.go:380 +0x7f
github.com/go-git/go-git/v5.(*Remote).fetch(0xc0005c3930, 0x4e8e9c0, 0xc0002e7f00, 0xc0005c3b38, 0x0, 0x0, 0x0, 0x0)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/remote.go:328 +0x6ac
github.com/go-git/go-git/v5.(*Remote).FetchContext(...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/go-git/go-git/[email protected]/remote.go:263
github.com/quorumcontrol/dgit/remotehelper.(*Runner).Run(0xc0005c3cb0, 0x4e8e9c0, 0xc0002e7f00, 0x7fff5fbff7e3, 0x4, 0x7fff5fbff7e8, 0x10, 0x0, 0x0)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/remotehelper/runner.go:236 +0x19e7
github.com/quorumcontrol/dgit/cmd.glob..func2(0x56b9d60, 0xc00031eaa0, 0x2, 0x2)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/cmd/remotehelper.go:68 +0x8ba
github.com/spf13/cobra.(*Command).execute(0x56b9d60, 0xc00031ea60, 0x2, 0x2, 0x56b9d60, 0xc00031ea60)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/spf13/[email protected]/command.go:830 +0x29d
github.com/spf13/cobra.(*Command).ExecuteC(0x56b9fe0, 0x40439ea, 0x55a5dc0, 0xc000000180)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/spf13/[email protected]/command.go:914 +0x2fb
github.com/spf13/cobra.(*Command).Execute(...)
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/go/pkg/mod/github.com/spf13/[email protected]/command.go:864
github.com/quorumcontrol/dgit/cmd.Execute()
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/cmd/root.go:25 +0x36
main.main()
	/tmp/dgit-20200328-88368-1hlrr3v/quorumcontrol-dgit-512ba95/main.go:11 +0x45

git push exits with 1 status code when "Everything up-to-date"

Steps to reproduce:

  1. Clone this repo
  2. Add a dgit remote: git remote add dorigin dgit://quorumcontrol/decentragit-remote
  3. Push master to it: git push dorigin master

Result:

Git outputs Everything up-to-date but the exit status is 1 instead of 0.

Expected result:

Same but exit status of 0 since the command seems successful otherwise.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.