From 7d2224667a78a5c5c792473a9b46d49c19075cb5 Mon Sep 17 00:00:00 2001 From: Lars Gierth Date: Sat, 16 Apr 2016 21:01:30 -0700 Subject: [PATCH] Add package extraction notes License: MIT Signed-off-by: Lars Gierth --- README.md | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5627b62..f9625b2 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ libp2p is the product of a long, and arduous quest of understanding -- a deep di libp2p implementation in Go is a work in progress. As such, there's a few things you can do right now to help out: - Go through the modules below and **check out existing issues**. This would be especially useful for modules in active development. Some knowledge of IPFS/libp2p may be required, as well as the infrasture behind it - for instance, you may need to read up on p2p and more complex operations like muxing to be able to help technically. - - **Perform code reviews**. + - **Perform code reviews**. - **Add tests**. There can never be enough tests. # Usage @@ -53,3 +53,55 @@ $ go test ./p2p/ ## Links - [**Specs**](https://github.com/ipfs/specs/tree/master/libp2p) - [**Website**](https://github.com/diasdavid/libp2p-website) + + +## Extracting packages from go-libp2p + +We want to maintain history, so we'll use git-subtree for extracting packages. + +```sh +# 1) create the extracted tree (has the directory specified as -P as its root) +> cd go-libp2p/ +> git subtree split -P p2p/crypto/secio/ -b libp2p-secio +62b0a5c21574bcbe06c422785cd5feff378ae5bd +# important to delete the tree now, so that outdated imports fail in step 5 +> git rm -r p2p/crypto/secio/ +> git commit +> cd ../ + +# 2) make the new repo +> mkdir go-libp2p-secio +> cd go-libp2p-secio/ +> git init && git commit --allow-empty + +# 3) fetch the extracted tree from the previous repo +> git remote add libp2p ../go-libp2p +> git fetch libp2p +> git reset --hard libp2p/libp2p-secio + +# 4) update self import paths +> sed -someflagsidontknow 'go-libp2p/p2p/crypto/secio' 'golibp2p-secio' +> git commit + +# 5) create package.json and check all imports are correct +> vim package.json +> gx --verbose install --global +> gx-go rewrite +> go test ./... +> gx-go rewrite --undo +> git commit + +# 4) make the package ready +> vim README.md LICENSE +> git commit + +# 5) bump the version separately +> vim package.json +> gx publish +> git add package.json .gx/ +> git commit -m 'Publish 1.2.3' + +# 6) clean up and push +> git remote rm libp2p +> git push origin master +``` -- GitLab