1. 20 Jun, 2015 4 commits
  2. 13 Jun, 2015 3 commits
    • W. Trevor King's avatar
      core/commands/unixfs: Rename 'ipfs unixfs' to 'ipfs file' · 3e6905e8
      W. Trevor King authored
      To be less confusing to newcomers (the IPFS filesystem isn't
      Unix-specific anyway, and it isn't even very POSIX-specific [1,2,3]).
      I'm a bit uncertain about having one name for users and another for
      devs, but the consensus seems to be that mainaining two names is worth
      the trouble [4].  We also kicked around:
      
      * 'files' (plural),
      * 'filesystem' (too long), and
      * 'fs' (redundant after 'ipfs', even though IPFS isn't just about
        filesystems)
      
      on IRC [5 through 6].  I wish there was a more evocative term.  I'm
      never sure where "file" lands on the scale between "filesysytem",
      "everything is a file", "a single chunk of data with an associated
      inode".  But we can't think of anything better.
      
      [1]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529070
      [2]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529921
      [3]: https://github.com/ipfs/go-ipfs/pull/1136/files#r29377283
        In my response to this (no longer visibile on GitHub):
      
        On Wed, Apr 29, 2015 at 01:30:04PM -0700, Juan Batiz-Benet wrote:
        > > +package fsnode
        >
        > i think this package should be called `unixfs` as that's the
        > abstraction that this is calling to.
      
        Will do, although I don't see what's especially Unix-y about these
        file nodes.
      
      [4]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529811
      [5]: https://botbot.me/freenode/ipfs/2015-06-09/?msg=41428456&page=5
      [6]: https://botbot.me/freenode/ipfs/2015-06-09/?msg=41430703&page=5
      
      License: MIT
      Signed-off-by: default avatarW. Trevor King <wking@tremily.us>
      3e6905e8
    • W. Trevor King's avatar
      core/commands/unixfs/ls: Don't recurse into chunked files · 663f37cb
      W. Trevor King authored
      Folks operating at the Unix-filesystem level shouldn't care about that
      level of Merkle-DAG detail.  Before this commit we had:
      
        $ ipfs unixfs ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox
        /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox:
        ... several lines of empty-string names ...
      
      And with this commit we have:
      
        $ ipfs unixfs ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox
        /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox
      
      I also reworked the argument-prefixing (object.Argument) in the output
      marshaller to avoid redundancies like:
      
        $ ipfs unixfs ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox
        /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox:
        /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox
      
      As a side-effect of this rework, we no longer have the trailing blank
      line that we used to have after the final directory listing.
      
      The new ErrImplementation is like Python's NotImplementedError, and is
      mostly a way to guard against external changes that would need
      associated updates in this code.  For example, once we see something
      that's neither a file nor a directory, we'll have to update the switch
      statement to handle those objects.
      
      License: MIT
      Signed-off-by: default avatarW. Trevor King <wking@tremily.us>
      663f37cb
    • W. Trevor King's avatar
      core/commands/unixfs: Add 'ipfs unixfs ls ...' · 434871ba
      W. Trevor King authored
      This is similar to 'ipfs ls ...', but it:
      
      * Lists file sizes that match the content size:
      
          $ ipfs --encoding=json unixfs ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4
          {
            "Objects": [
              {
                "Argument": "/ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4",
                "Links": [
                  {
                    "Name": "busybox",
                    "Hash": "QmPbjmmci73roXf9VijpyQGgRJZthiQfnEetaMRGoGYV5a",
                    "Size": 1947624,
                    "Type": 2
                  }
                ]
              }
            ]
          }
          $ ipfs cat /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox | wc -c
          1947624
      
        'ipfs ls ...', on the other hand, is using the Merkle-descendant
        size, which also includes fanout links and the typing information
        unixfs objects store in their Data:
      
          $ ipfs --encoding=json ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4
          {
            "Objects": [
              {
                "Hash": "/ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4",
                "Links": [
                  {
                    "Name": "busybox",
                    "Hash": "QmPbjmmci73roXf9VijpyQGgRJZthiQfnEetaMRGoGYV5a",
                    "Size": 1948128,
                    "Type": 2
                  }
                ]
              }
            ]
          }
      
      * Has a simpler text output corresponding to POSIX ls [1]:
      
          $ ipfs unixfs ls /ipfs/QmV2FrBtvue5ve7vxbAzKz3mTdWq8wfMNPwYd8d9KHksCF/gentoo/stage3/amd64/2015-04-02
          bin
          dev
          etc
          proc
          run
          sys
          $ ipfs ls /ipfs/QmV2FrBtvue5ve7vxbAzKz3mTdWq8wfMNPwYd8d9KHksCF/gentoo/stage3/amd64/2015-04-02
          QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4 1948183 bin/
          QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       dev/
          QmUz1Z5jnQEjwr78fiMk5babwjJBDmhN5sx5HvPiTGGGjM 1207    etc/
          QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       proc/
          QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       run/
          QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       sys/
      
        The minimal output allows us to start off with POSIX compliance and
        then add options (which may or may not be POSIX compatible) to
        adjust the output format as we get a better feel for what we need
        ([2] through [3]).
      
      [1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html
      [2]: https://botbot.me/freenode/ipfs/2015-06-12/?msg=41724727&page=5
      [3]: https://botbot.me/freenode/ipfs/2015-06-12/?msg=41725146&page=5
      
      License: MIT
      Signed-off-by: default avatarW. Trevor King <wking@tremily.us>
      434871ba
  3. 12 Jun, 2015 4 commits
  4. 11 Jun, 2015 2 commits
  5. 08 Jun, 2015 8 commits
  6. 07 Jun, 2015 5 commits
  7. 06 Jun, 2015 3 commits
  8. 05 Jun, 2015 1 commit
  9. 03 Jun, 2015 10 commits