moby/pkg
Josh Hawn c109095a58 Fix docker cp Behavior With Symlinks
[pkg/archive] Update archive/copy path handling

  - Remove unused TarOptions.Name field.
  - Add new TarOptions.RebaseNames field.
  - Update some of the logic around path dir/base splitting.
  - Update some of the logic behind archive entry name rebasing.

[api/types] Add LinkTarget field to PathStat

[daemon] Fix stat, archive, extract of symlinks

  These operations *should* resolve symlinks that are in the path but if the
  resource itself is a symlink then it *should not* be resolved. This patch
  puts this logic into a common function `resolvePath` which resolves symlinks
  of the path's dir in scope of the container rootfs but does not resolve the
  final element of the path. Now archive, extract, and stat operations will
  return symlinks if the path is indeed a symlink.

[api/client] Update cp path hanling

[docs/reference/api] Update description of stat

  Add the linkTarget field to the header of the archive endpoint.
  Remove path field.

[integration-cli] Fix/Add cp symlink test cases

  Copying a symlink should do just that: copy the symlink NOT
  copy the target of the symlink. Also, the resulting file from
  the copy should have the name of the symlink NOT the name of
  the target file.

  Copying to a symlink should copy to the symlink target and not
  modify the symlink itself.

Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)

(cherry picked from commit 75f6929b44)
2015-07-30 17:21:20 -07:00
..
ansiescape Use notary library for trusted image fetch and signing 2015-07-24 14:08:20 -07:00
archive Fix docker cp Behavior With Symlinks 2015-07-30 17:21:20 -07:00
broadcastwriter remove dead code after decoupling from jsonlog 2015-07-21 20:47:35 -04:00
chrootarchive archive, chrootarchive: split out decompression 2015-07-29 16:48:41 -07:00
devicemapper devicemapper: Check loop devices of existing pool 2015-07-07 14:13:29 -04:00
directory Makes directory pkg compilable on Windows. 2015-03-12 15:54:22 +01:00
fileutils Add missing tests and docs for pkg/fileutils 2015-07-12 22:43:42 +02:00
graphdb Windows: Statically linkable SQLite3 2015-07-21 09:33:46 -07:00
homedir Update libcontainer 2015-07-16 16:02:26 -07:00
httputils Fixed outdated comment. 2015-07-02 08:17:11 -03:00
ioutils Split reader interface from logger interface 2015-07-21 20:47:31 -04:00
jsonlog remove dead code after decoupling from jsonlog 2015-07-21 20:47:35 -04:00
jsonmessage Add test coverage to pkg/jsonmessage 2015-06-02 21:19:38 +02:00
listenbuffer linting changes 2015-06-17 01:16:57 +03:00
mflag cli: new daemon command and new cli package 2015-07-23 19:44:46 -04:00
mount pkg: mount: golint 2015-07-22 10:26:10 +02:00
namesgenerator golint: Lint pkg/namesgenerator 2015-07-21 16:33:34 +01:00
nat golint: Fix issues in pkg/nat 2015-07-22 00:47:41 +01:00
parsers Allow starting a container with an existing hostConfig which contains links 2015-07-21 22:10:00 +02:00
pidfile Remove redundant log in pkg/pidfile/pidfile.go 2015-05-15 15:26:00 +08:00
plugins Merge pull request #13951 from calavera/plugins_path 2015-07-17 21:11:31 +02:00
pools daemon: lower allocations 2015-06-30 01:45:31 +03:00
progressreader Modified progress reader to close silently when read is complete. 2015-05-28 14:09:30 -03:00
promise Move Go() promise-like func from utils to pkg/promise 2014-09-29 23:16:27 -07:00
proxy Replace aliased imports of logrus, fixes #11762 2015-03-26 23:22:04 +01:00
pubsub Don't use time.After if there is no timeout 2015-07-14 09:14:51 -07:00
random Use goroutine-safe version of rand.Source 2015-05-19 12:32:40 -07:00
reexec reexec: Use in-memory binary on linux instead of os.Args[0] 2015-07-24 14:15:50 -04:00
signal Add SIGUSR1 handler for dumping stack/goroutine traces 2015-05-12 10:09:23 +10:00
sockets Update libcontainer 2015-07-16 16:02:26 -07:00
stdcopy Fix Typo in stdcopy.go 2015-06-24 15:00:14 +08:00
streamformatter Refactor pkg/stremformatter with custom constructors instead of passing a boolean 2015-05-13 00:09:41 +02:00
stringid pkg/stringid: precompile regexp 2015-05-13 21:48:48 +03:00
stringutils Add test coverage for pkg/stringutils 2015-05-29 15:49:29 +02:00
symlink Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
sysinfo Update libcontainer 2015-07-16 16:02:26 -07:00
system Windows: Win32 event for sigusr1 linux equivalence 2015-07-06 18:58:53 -07:00
systemd Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
tailfile Split reader interface from logger interface 2015-07-21 20:47:31 -04:00
tarsum Carry of PR #13520 2015-06-13 09:27:30 -07:00
term Fix windows tag in pkg/term 2015-07-01 13:16:16 -07:00
timeoutconn Small if err cleaning 2015-04-27 21:50:33 +02:00
timeutils Merge pull request #13165 from ahmetalpbalkan/durations 2015-06-03 22:14:42 +02:00
tlsconfig tlsconfig: better format for error message in tlsconfig 2015-07-30 12:54:14 -07:00
truncindex added ability to iterate over all indexes and use index.Iterate() instead of ReadDir() to walk over the graph 2015-07-07 22:13:28 +03:00
ulimit Fixes pointer error 2015-03-25 20:45:17 -07:00
units Remove useless conversion 2015-06-24 00:47:08 +08:00
urlutil Add syslog-address log-opt 2015-05-29 00:42:11 +02:00
useragent requestdecorator: repurpose the package and rename to useragent 2015-05-18 21:51:54 -04:00
version Fix minor typo 2015-03-25 00:46:22 +08:00
README.md Add README to pkg 2013-12-23 23:12:19 +00:00

pkg/ is a collection of utility packages used by the Docker project without being specific to its internals.

Utility packages are kept separate from the docker core codebase to keep it as small and concise as possible. If some utilities grow larger and their APIs stabilize, they may be moved to their own repository under the Docker organization, to facilitate re-use by other projects. However that is not the priority.

The directory pkg is named after the same directory in the camlistore project. Since Brad is a core Go maintainer, we thought it made sense to copy his methods for organizing Go code :) Thanks Brad!

Because utility packages are small and neatly separated from the rest of the codebase, they are a good place to start for aspiring maintainers and contributors. Get in touch if you want to help maintain them!