svn copy (cp)
优质
小牛编辑
118浏览
2023-12-01
svn copy (cp) — 在工作副本或仓库中复制一个文件或目录.
大纲
svn copy
SRC
[@REV
]... DST
描述
在工作副本或仓库中复制一个或多个文件. SRC
和 DST
可以是一个工作副本 (WC) 路径或 URL. 当复制多个源文件时, 每个源文件 都将是 DST
(此时 DST
必须是一个已存在的目录) 的直接子文件.
- WC → WC
复制并添加一个工作副本路径 (包含历史).
- WC → URL
立刻把 WC 的副本提交到 URL.
- URL → WC
把 URL 检出到 WC, 并添加 WC.
- URL → URL
执行一个服务器端的复制. 这通常用于创建分支和标签.
如果没有提供限定版本号 (即 @
), 那么在复制工作 副本路径时, 默认使用 REV
BASE
版本号, 在复制 URL 时默认使用 HEAD
版本号.
注意 | |
---|---|
你只能在同一个仓库内复制文件, Subversion 不支持在不同的仓库之间 进行复制. |
选项
--editor-cmd
CMD
--encoding
ENC
--file
(-F
)FILENAME
--force-log
--ignore-externals
--message
(-m
)MESSAGE
--parents
--quiet
(-q
)--revision
(-r
)REV
--with-revprop
ARG
示例
复制工作副本里的一个文件, 并把它添加到需要被版本控制的列表里 (在提交之前, 这个复制操作丝毫不会影响到仓库):
$ svn copy foo.txt bar.txt A bar.txt $ svn status A + bar.txt
把工作副本里的多个文件复制到一个目录内:
$ svn copy bat.c baz.c qux.c src A src/bat.c A src/baz.c A src/qux.c
复制工作副本文件 bat.c
的版本号 8, 并重新 命名复制后的文件.
$ svn copy -r 8 bat.c ya-old-bat.c A ya-old-bat.c
把工作副本里的文件复制到仓库中 (这个复制会马上提交, 所以用户 需要提供提交日志消息):
$ svn copy near.txt file:///var/svn/repos/test/far-away.txt -m "Remote copy." Committed revision 8.
从仓库复制一个文件到工作副本中 (在提交之前, 这个复制操作丝毫不会 影响到仓库):
$ svn copy file:///var/svn/repos/test/far-away -r 6 near-here A near-here
提示 | |
---|---|
这是找回仓库中已被删除文件的推荐方式! |
最后是从一个 URL 复制到另一个 URL:
$ svn copy file:///var/svn/repos/test/far-away \ file:///var/svn/repos/test/over-there -m "remote copy." Committed revision 9.
$ svn copy file:///var/svn/repos/test/trunk \ file:///var/svn/repos/test/tags/0.6.32-prerelease -m "tag tree" Committed revision 12.
提示 | |
---|---|
这是打标签最简单的方法—只需要用 svn copy 把版本号 (通常是 |
即使忘记打标签也不需要担心—在任何时候, 你总是可以为一个较 老的版本号创建标签:
$ svn copy -r 11 file:///var/svn/repos/test/trunk \ file:///var/svn/repos/test/tags/0.6.32-prerelease \ -m "Forgot to tag at rev 11" Committed revision 13.