js-git 사용

11554 단어 Gitjs-gitJavaScript

미리 읽어봤어요.

  • JavaScript로 Giit의 Kickstarter 프로젝트를 실현하고 28시간으로 자금을 조달한다
  • Giit의 구조(1)
  • Giit의 구조(2)
  • 기트 안쪽
  • js-git 소개


    자바스크립트로gitjs-git를 실현했습니다.
    일부러 자바스크립트로git를 실현한 이상 브라우저에서 사용해야 하지 않겠습니까?
    js-git는'어떤 형태로든 표현된.git 디렉토리'내용의 API 집합이다.
    이'어떤 형태로 표현된.git 목록'은 부팅 메모리,nodejs의 fs 표준 라이브러리 호각,indexedDB,WebSQL 등이 있다.DOMStorage 시스템이 없는 것을 신경 쓰지만 현지 창고로 사용하기 어렵다.local Storage를 사용하고 싶다면 local Storage-db를 직접 써보는 것도 재미있을 것 같다.또 어떤 클라우드에 저장된 API를 만들어서 보관할 수도 있을 것 같아요.
    이런 것들이 있으면 브라우저에서도 사용할 수 있다.

    브라우저부터 사용


    의존 관계를 Require로 처리하기 때문에 브라우저 ify로 빠르게 정리하세요.

    main.js

    
    // This provides symbolic names for the octal modes used by git trees.
    window.modes = require('./lib/modes');
    
    // Create a repo by creating a plain object.
    window.repo = {};
    
    // This provides an in-memory storage backend that provides the following APIs:
    // - saveAs(type, value) => hash
    // - loadAs(type, hash) => hash
    // - saveRaw(hash, binary) =>
    // - loadRaw(hash) => binary
    require('./mixins/mem-db')(repo);
    
    // This adds a high-level API for creating multiple git objects by path.
    // - createTree(entries) => hash
    require('./mixins/create-tree')(repo);
    
    // This provides extra methods for dealing with packfile streams.
    // It depends on
    // - unpack(packStream, opts) => hashes
    // - pack(hashes, opts) => packStream
    require('./mixins/pack-ops')(repo);
    
    // This adds in walker algorithms for quickly walking history or a tree.
    // - logWalk(ref|hash) => stream<commit>
    // - treeWalk(hash) => stream<object>
    require('./mixins/walkers')(repo);
    
    // This combines parallel requests for the same resource for effeciency under load.
    require('./mixins/read-combiner')(repo);
    
    // This makes the object interface less strict.  See it's docs for details
    require('./mixins/formats')(repo);
    
    

    index.html

    <script src="bundle.js"></script>
    

    아무튼 이동을 해보도록 하겠습니다.

    $ browserify main.js -o bundle.js
    $ open index.html
    
    크롬이 열려 있는 것 같습니다. Web Inspector의 컨트롤러에서 리포의 내용을 보십시오.

    제출해보세요.


    그런 용량에 제출하는 방법이 있습니다.
    일드와 같은 무서운 어휘를 사용하지만 콜백 모드도 문제없이 사용할 수 있다.
    다음은 콜백 모드 제출의 예입니다
    
    // First we create a blob from a string.  The `formats` mixin allows us to
    // use a string directly instead of having to pass in a binary buffer.
    repo.saveAs("blob", "Hello World\n", function(err, blobHash){
      console.log(err, blobHash);
    
      // Now we create a tree that is a folder containing the blob as `greeting.txt`
      repo.saveAs("tree", {
        "greeting.txt": { mode: modes.file, hash: blobHash }
      }, function(err, treeHash){
        console.log(err, treeHash);
    
        // With that tree, we can create a commit.
        // Again the `formats` mixin allows us to omit details like committer, date,
        // and parents.  It assumes sane defaults for these.
        repo.saveAs("commit", {
          author: {
            name: "Tim Caswell",
            email: "[email protected]"
          },
          tree: treeHash,
          message: "Test commit\n"
        }, function(err, commitHash){
          console.log(err, commitHash);
        });
      });
    });
    
    중첩이 심하다.

    불러오기


    이 일대에 기재되어 있다.
    yield를 사용했지만, 앞에서 말한 콜백 (err,result) 모드를 사용할 수 있습니다.
    주의해야 할 것은 블로그의git 대상을 읽은 후byte aray 형식으로 되돌아온다는 것이다.
    repo.saveAs("blob", "Hello World\n", function(err, blobHash){
      console.dir(blobHash);
      repo.loadAs("blob", blobHash, function(err, byteArray){
        console.log(byteArray);// -> [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 10]
      });
    });
    
    tree의git 대상의 확장자에 따라 2진법의 읽기를 판단해야 합니다.

    개발 상황


    2014-09-09 지금 봤어!
    이 일대
    약 2주 전부터 쓰기 API가 드디어 정비되었다.
    또 원격 창고와의 교환도 이뤄질 것으로 보인다.
    뜨거워!

    좋은 웹페이지 즐겨찾기