SVN 命令详解

文章目录

  • 在 SVN 服务端创建项目仓库,即资源仓库
  • 启动 SVN 服务器
  • 将客户端的源代码导入 SVN 版本库中
  • 从 SVN 服务器端检出代码到指定的客户端目录下
  • 从 SVN 版本控制器中导出指定版本的源代码到指定的客户端目录下
  • 更新指定版本的数据/回滚指定版本的数据/还原到指定版本的数据
  • 解决冲突
  • 清理工作副本
  • 查看/输出指定文件或 URL 的内容
  • 更新客户端的工作副本,即客户端数据
  • 显示文件每行的版本及作者信息
  • 提交更改过的代码到服务器
  • 只提交指定的文件或者目录到版本库中
  • 查看版本库的信息
  • 查看文件或者目录状态
  • 锁住文件让其它用户不能提交改动
  • 解开工作拷贝文件或者项目仓库 URL 的锁
  • 在工作副本或者资源仓库中创建包括历史在内的复本
  • 从版本控制中删除文件和目录
  • 查看日志
  • 比较差异
  • 将两个版本之间的差异合并到当前文件
  • 查看版本库下的文件和目录列表
  • 创建纳入版本控制下的新目录
  • 切换仓库地址
  • 移动或者重命名工作拷贝或者资源仓库中的文件或者目录
  • 删除文件或者目录的属性
  • 编辑文件或者目录的属性
  • 打印文件或者目录的属性值
  • 列出文件或者目录的所有属性
  • 给指定文件或者目录设置属性值
  • 往版本库中添加新的文件
  • 恢复客户端指定目录或者文件的修改
  • 查看 SVN 命令帮助

在 SVN 服务端创建项目仓库,即资源仓库

我要在 /Users/liaowenxiong/documents/svn-repo/ 目录创建一个名为 qpw 的仓库,命令如下:

svnadmin create /Users/liaowenxiong/documents/svn-repo/qpw

执行上述命令后,在 /Users/liaowenxiong/documents/svn-repo 目录下就多了一个子目录 qpw,同时目录 qpw 下面还有很多 SVN 自动创建的文件,如下图所示:
在这里插入图片描述
建议按产品线来创建资源仓库,因为一个产品线下会分多个项目,这样 SVN 服务端的『仓库-项目』结构正好与『产品线-项目』结构吻合了。

例如:公司其中一个产品叫 qpw,那么就创建一个名为 qpw 的仓库,在实际开发过程中,产品线 qpw 下面会有多个项目,那么就直接在 qpw 下创建多个目录代表多个项目,这些目录就是项目的根目录,在项目根目录下可以创建该项目的多个分支目录。

启动 SVN 服务器

输入以下命令启动 SVN 服务进程:

svnserve -d -r /Users/liaowenxiong/documents/svn-repo/qpw

-d 表示守护进程。
-r 表示在后台执行。

将客户端的源代码导入 SVN 版本库中

将客户端的某个文件导入到 SVN 服务器仓库中:

svn import /Users/liaowenxiong/desktop/123/122.png svn://localhost/Users/liaowenxiong/documents/svn-repo/qpw/image/122.png --username=lwx password=123 -m "上传图片"
# 如果 SVN 服务端与客户端都在本地主机上,SVN 服务端的仓库路径可以这样写
svn import /Users/liaowenxiong/desktop/123/122.png file:///Users/liaowenxiong/documents/svn-repo/qpw/image/122.png --username=lwx password=123 -m "上传图片"

客户端的文件122.png,上传到 SVN 服务端,要把服务端目标路径完整地写出来。如上的命令语句,仓库 qpw 下没有子目录 image,导入后会自动创建子目录 image,再创建文件122.png,然后再把从客户端读取到内存中的122.png的数据写入到 /Users/liaowenxiong/documents/svn-repo/qpw/image/122.png 中,就完成了文件导入的过程。

将客户端的某个目录下的所有文件导入到 SVN 服务器仓库中:

svn import /Users/liaowenxiong/desktop/image svn://localhost/Users/liaowenxiong/documents/svn-repo/qpw/image --username=lwx password=123 -m "上传图片"

客户端的目录 image 下所有的文件会导入到 SVN 服务端的 /Users/liaowenxiong/documents/svn-repo/qpw/image 目录下

注:

  1. 必须带上选项 -m,除非你设置了环境变量 SVN_EDITOR
  2. 导入指定文件时,SVN 服务端目标路径必须也是文件路径

从 SVN 服务器端检出代码到指定的客户端目录下

liaowenxiongdeMacBook-Air:test1 liaowenxiong$ svn checkout svn://localhost/Users/liaowenxiong/documents/svn-repo/qpw/ --username=lwx --password=123 /Users/liaowenxiong/desktop/test
A    /Users/liaowenxiong/desktop/test/image
A    /Users/liaowenxiong/desktop/test/image/122.png
A    /Users/liaowenxiong/desktop/test/image/123.png
A    /Users/liaowenxiong/desktop/test/image/lwx
A    /Users/liaowenxiong/desktop/test/image/lwx1
取出版本 8

上面指定客户端的存放路径,则只是将 qpw 仓库目录下的内容导出到客户端目录 /Users/liaowenxiong/desktop/test 下,不包含 qpw 目录本身。如果你不指定客户端的存放路径,SVN 会把服务端 URL 指定的目录(被检出目录)及其内容一起检出到客户端的当前工作目录下,这是个坑。

liaowenxiongdeMacBook-Air:test liaowenxiong$ svn checkout svn://localhost/Users/liaowenxiong/documents/svn-repo
A    svn-repo/qpw
A    svn-repo/qpw/image
A    svn-repo/qpw/image/122.png
A    svn-repo/qpw/image/123.png
A    svn-repo/qpw/image/lwx
A    svn-repo/qpw/image/lwx1
取出版本 8

其它:
1.checkout 可以简写成 co
2.检出的客户端目标目录如果是 unversioned,且里面含有与 URL 指定目录下的文件同名的文件,则不会覆盖客户端的同名文件,也就是跳过检出,即 SVN 版本库中的同名文件没有检出到指定的目标目录下,只是检出后整个目录及其它从 SVN 版本库检出的内容变成 versioned 而已,但是同名的客户端文件还是 unversioned 状态

从 SVN 版本控制器中导出指定版本的源代码到指定的客户端目录下

例如,回滚到第 9 版本,实际就是导出第 9 版本的源代码,命令如下所示:

svn export -r9 --force file:///var/www/svn_data/ecshop/ /home/ajia/html/ecshop/

注:

  1. /home/ajia/html/ecshop/:是客户端存放项目源代码的目录
  2. file:///var/www/svn_data/ecshop/:是项目的 SVN 版本库路径,此路径是客户端文件系统的路径格式。远程的 SVN 版本库路径通常是这样的:svn://47.104.51.164/var/www/svn_data/ecshop/
  3. 选项 -r 后面指定具体的版本号

更新指定版本的数据/回滚指定版本的数据/还原到指定版本的数据

将客户端版本库中的文件 test.java 还原到版本 20

svn update -r 20 test.java

解决冲突

提交的时候产生冲突了,可以执行命令 svn update 更新下客户端的数据,然后修改文件,接着执行命令 svn resolved 清除冲突标记,最后尝试再提交。

清除整个目录下的冲突标记:

lwxdeMacBook-Air:svntest lwx$ svn resolved -R .
“test2.txt”的冲突状态已解决

清除指定文件的冲突标记:

lwxdeMacBook-Air:svntest lwx$ svn resolved test4.txt
“test4.txt”的冲突状态已解决
lwxdeMacBook-Air:svntest lwx$ svn ci -m 测试
正在替换       test4.txt
传输文件数据.done
正在读取事务
提交后的版本为 66

注:

  1. 往往是整个目录的内容有冲突,所以清除冲突标记时要指定目录,才能真正清除冲突标记
  2. 选项 -R 是无穷递归
  3. 此子命令不在语义上解决冲突或删除冲突标记;它只删除与冲突相关的工件文件,并允许再次提交路径。它已被弃用,转而运行 svn resolve --accept working

清理工作副本

恢复因为中断操作而处于锁定状态的工作副本,或删除不需要的文件。

svn cleanup path

查看/输出指定文件或 URL 的内容

如果指定了版本,将从指定的版本开始查找:

svn cat -r PREV filename > filename  # PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的

查看 SVN 服务端版本库中指定文件的内容:

lwxdeMacBook-Air:svntest lwx$ svn cat svn://47.104.81.224/Documents/需求文档/test2.txt

更新客户端的工作副本,即客户端数据

例如,我想更新目录 /var/www/qpw/miniprogram/ 下的代码,则需要先进入该目录下,然后执行更新命令:

svn update

注:

  1. update 可以简写成 up
  2. 更新的时候,SVN 有根据路径映射表去查找客户端文件,所以原来在 versioned 的文件如果被 SVN 以外的命令删除,会提示文件已被恢复
  3. 更新客户端数据时,若存在 unversioned 的同名文件时,SVN 会报告冲突,并给出解决冲突的选项,你可以根据自己的需求选择后继续
  4. 如果客户端数据的版本和你要更新的 SVN 服务端版本相同,则不会从 SVN 服务端获取数据更新到客户端

显示文件每行的版本及作者信息

svn blame

可以指定版本,如果指定的 rev 是单个版本,显示该版本作者信息。

svn blame --revision rev

如果指定的是一个版本范围 rev1:rev2,则显示 rev2 版本作者的信息,但只检查版本到 rev1

svn blame --revision rev1:rev2

注:选项 --revision 可以简写成 -r

提交更改过的代码到服务器

你将 miniprogram 目录下的代码修改了,你现在想将 miniprogram 目录下的最新代码提交到 SVN 服务器对应的目录下,你必须先进入到 miniprogram 目录下,然后执行提交命令:

cd /var/www/qpw/miniprogram/
svn commit -m "修改了main.m文件"
svn ci --file ARG # 从文件ARG读取日志信息

注:

  1. 提交修改到 SVN 服务器,也可以描述为同步修改的内容到 SVN 服务器,提交也可以理解为 Check In(检入),为了保证客户端的数据与 SVN 服务器的数据同步,要养成经常 update 的习惯,而且最好在提交之前先 update 客户端的数据再提交
  2. commit 可以简写成 ci
  3. 提交之前最好要更新下,因为如果其他人也修改了相同位置的代码,你可以提前更新下来手动处理冲突,然后提交就可以顺利通过了,当然你非要提交后产生冲突再解决也可以,但是这不是好的习惯
  4. 可以使用选项 --no-unlock,表示不要在提交的时候释放锁
  5. 提交命令不能指定 URL,但是可以指定 PATH,而且只能提交处于 versioned 状态的目录下的内容

只提交指定的文件或者目录到版本库中

svn commit 后面可以附加参数指定文件路径:

svn commit /Users/lwx/Documents/workspace/miniprogram/Person.java -m "改了啥"

注意:受版本控制的路径名称大小写敏感

查看版本库的信息

你需要在客户端进入受 SVN 管控的目录下后再输入下面的命令:

lwxdeMacBook-Air:htlwk_SVN lwx$ svn info
路径: .
工作副本根目录: /Users/lwx/Documents/qpw
URL: svn://13.789.09.777/Documents
Relative URL: ^/Documents
版本库根: svn://13.789.09.777
版本库 UUID: 67c9418b-eafe-4073-b855-d64970bfc5b8
版本: 47
节点种类: 目录
调度: 正常
最后修改的作者: lcz
最后修改的版本: 47
最后修改的时间: 2021-07-18 13:58:35 +0800 (日, 2021-07-18)

查看文件或者目录状态

显示目录下的文件和子目录的状态,正常状态不显示。

svn status path

说明:

标识符说明
?不在svn的控制中
M内容被修改
C发生冲突
A预定加入到版本库
K被锁定

使用 -v,打印每个项目的完整修订信息:

lwxdeMacBook-Air:htlwk_svn lwx$ svn -v status47       47 lcz          .47       47 lcz          设计文档47       47 lcz          设计文档/xxx概要设计 - 小程序端分册.docx47       43 lcz          设计文档/xxx概要设计 - 总册.docx47       47 lcz          设计文档/xxx概要设计 - 管理后台端分册.docx47       43 lcz          设计文档/xxx.pdb47       43 lcz          设计文档/xxx.pdm47        1 lcz          设计文档/xxx数据模型.docx47       43 lcz          设计文档/xxx数据模型.rtf47       23 lwx          需求文档47       23 lwx          需求文档/企评网UI设计稿_小程序47       23 lwx          需求文档/企评网UI设计稿_小程序/PSD

注:

  1. 第二列表示最后一次修改的版本号,第三列表示最后一次的修改人
  2. svn statussvn diffsvn revert 这三条命令在没有网络的情况下也可以执行的,原因是 SVN 在客户端的 .svn 中保留了客户端版本的原始拷贝
  3. status 可以简写成 st
  4. 如果没有参数,则仅打印客户端修改的项目(无网络访问)

锁住文件让其它用户不能提交改动

svn lock target

注:

  1. 使用选项 --message–m 指定锁消息
  2. --force 偷锁,即强制加锁,通过从其他用户或者工作拷贝把锁给偷过来,没有明白,为啥要偷锁,难道只有一把锁吗?

解开工作拷贝文件或者项目仓库 URL 的锁

svn unlock target…

注:--force 砸坏现有对 target 的锁,甚至它不是被当前工作拷贝所拥有的

在工作副本或者资源仓库中创建包括历史在内的复本

svn copy src dest

说明:
src 和 dest 可以是工作拷贝(WC)的路径或者 URL。

  1. WC WC 拷贝并添加
  2. WC URL 立即提交 WC 的拷贝到 URL
  3. URL WC 签出 URL 到 WC,即添加
  4. URL URL 完全服务器端拷贝;用于制作分支和打标签
  5. --revision rev–r rev 指定要拷贝的 src 的版本。只在 src 是服务端仓库的 URL 时才有意义

从版本控制中删除文件和目录

直接删除 SVN 服务端版本库的文件:

svn delete svn://192.168.1.1/pro/domain/test.java -m “delete test file”

或者先删除客户端版本库的文件,然后再提交到 SVN 服务端,推荐使用这种方式:

svn delete test.java 
svn ci -m "delete test file"

注:delete 可以写成 delremoverm

查看日志

查看文件 test.java 的所有修改记录,及其版本号的变化:

svn log test.java

比较差异

将修改的文件 test.java 与其基础版本比较:

svn diff test.java

如果要查看特定修订版(即修订版1)的确切不同行,只需键入:

svn diff -r 1

同一个文件的两个版本进行差异比较,例如文件 test.java 的版本 200201 之间进行差异比较:

svn diff -r 200:201 test.java

注:diff 可以简写成 di

将两个版本之间的差异合并到当前文件

将文件 test.java 的版本 200205 之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下。

svn merge -r 200:205 test.java

查看版本库下的文件和目录列表

可以查看客户端版本库下的文件和目录,例如显示 path 目录下的所有属于版本库的文件和目录:

svn list path

也可以查看 SVN 服务端某个指定目录下的内容,不过需要输入远程主机操作系统 root 用户的登录密码以及 SVN 服务器资源仓库的登录用户名和密码。

svn list svn://47.104.53.284/SourceCodes/miniprogram

注:list 可以简写成 ls

创建纳入版本控制下的新目录

svn mkdir PATH
svn mkdir URL
svn mkdir svn://57.104.99.388/Documents/需求文档/svntest2 -m "创建目录svntest2"
  1. 每一个以工作副本 PATH 指定的目录,都会创建在客户端端,并且加入新增调度(新增计划 schedule),以待下一次的提交。
  2. 每个以 URL 指定的目录,都会立即提交于仓库中创建。
  3. 在这两个情况下,所有的中间目录都必须事先存在。

切换仓库地址

改写工作副本的 URL 元数据,以反映单纯的 URL 的改变。当仓库的根 URL 变动(比如方案名或主机名称变动),但是工作副本仍旧对应到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。

svn switch --relocate <Old Repository Root> <New Repository Root>
# 或者
svn relocate FROM-PREFIX TO-PREFIX [PATH]

移动或者重命名工作拷贝或者资源仓库中的文件或者目录

请注意,在Subversion不知道的情况下,决不能从工作副本中删除或重命名文件。您可以在文件中随意修改。但是,如果您只是重命名文件或将其移动到另一个文件夹,Subversion将丢失对它们的跟踪。对于这些操作,请始终使用“svn”命令。

svn move src dest
svn move oldfilename newfilename
svn commit -m "moved file"

删除文件或者目录的属性

svn propdel propname path

注:propname 是属性名

编辑文件或者目录的属性

svn propedit propname path

打印文件或者目录的属性值

svn propget propname path

注:--strict 禁用额外的换行和其它的美化措施(在把二进制属性重定向到文件时会有用处)

列出文件或者目录的所有属性

svn proplist

注:

  1. --verbose
  2. --recursive
  3. --revision rev 列出 path 在版本 rev 定义的属性

给指定文件或者目录设置属性值

svn propset propname propval path…

注:

  1. --file file 读取 file 的内容,使用它作为属性值
  2. --recursive
  3. --encoding enc 指定属性值的字符编码集
  4. propset 可以简写成 psetps

往版本库中添加新的文件

svn add test.java
svn add *.java # 将当前目录下所有的 java 文件添加到 SVN 版本库中

这里只是把文件添加到客户端的版本库中,SVN 服务端的版本库中并没有此文件,你需要提交到服务端保持同步

svn commit -m "added new file"

如果文件名含有符号 @ 需要特别处理:

svn add xxx@2x.png 

执行上述命令会报 xxx not found,可以在文件名后面加上 @,如下所示:

svn add xxx@2x.png@  

这是因为 svn 命令使用 @ 符号来指定一个版本号,所以会将最后一个 @ 前面的字符串解释为文件名。

恢复客户端指定目录或者文件的修改

将指定目录或者文件恢复到改变前的状态,只能恢复客户端版本库的数据,但是它不会恢复被删除的文件。

svn revert PATH

查看 SVN 命令帮助

你可以使用选项 -?-h--help 来查看 SVN 总命令的帮助信息:

lwxdeMacBook-Air:htlwk_SVN lwx$ svn -?
usage: svn <subcommand> [options] [args]
Subversion command-line client.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules,'svn --version --verbose' to see dependency versions as well,'svn --version --quiet' to see just the version number.Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.Available subcommands:addauthblame (praise, annotate, ann)catchangelist (cl)checkout (co)cleanupcommit (ci)copy (cp)delete (del, remove, rm)diff (di)exporthelp (?, h)importinfolist (ls)locklogmergemergeinfomkdirmove (mv, rename, ren)patchpropdel (pdel, pd)propedit (pedit, pe)propget (pget, pg)proplist (plist, pl)propset (pset, ps)relocateresolveresolvedrevertstatus (stat, st)switch (sw)unlockupdate (up)upgradeSubversion 是版本控制工具。
欲取得详细资料,请参阅 http://subversion.apache.org/

你也可以使用 svn help commit 或者 svn commit -? 查看某个子命令的使用说明:

lwxdeMacBook-Air:htlwk_SVN lwx$ svn commit -?
commit (ci): Send changes from your working copy to the repository.
usage: commit [PATH...]A log message must be provided, but it can be empty.  If it is notgiven by a --message or --file option, an editor will be started.If any targets are (or contain) locked items, those will beunlocked after a successful commit, unless --no-unlock is given.If --include-externals is given, also commit file and directoryexternals reached by recursion. Do not commit externals with afixed revision.有效选项: -q [--quiet]             : 不打印信息,或只打印概要信息-N [--non-recursive]     : obsolete; same as --depth=empty--depth ARG              : 限制操作深度是 ARG ('empty', 'files','immediates', 或 'infinity')--targets ARG            : 传递文件 ARG 内容为附件参数--no-unlock              : 不要解锁目标-m [--message] ARG       : 指定日志信息ARG-F [--file] ARG          : 从文件ARG读取日志信息--force-log              : 强制校验日志信息资源--editor-cmd ARG         : 使用 ARG 作为外部编辑器--encoding ARG           : 将ARG的值视为字符编码--with-revprop ARG       : 在新版本设置版本属性 ARG使用格式 name[=value]--changelist [--cl] ARG  : 只能对修改列表 ARG 的成员操作--keep-changelists       : 不要在提交后删除修改列表--include-externals      : also operate on externals defined bysvn:externals properties(Use '-v' to show global and experimental options.)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java当前4中引用_Java的四种引用

1.强引用如果一个对象具有强引用&#xff0c;那就 类似于必不可少的生活用品&#xff0c;垃圾回收器绝不会回收它。当内存空间不足&#xff0c;Java虚拟机宁愿抛出OutOfMemoryError错误&#xff0c;使程序异常终止&#xff0c;也不会靠随意回收具有强引用的对象来解决内存不足问…

递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法

递归算法和迭代算法这周的任务是用Java实现二进制搜索 &#xff0c;您需要编写迭代和递归二进制搜索算法 。 在计算机科学中&#xff0c;二进制搜索或半间隔搜索是一种分而治之的算法&#xff0c;用于在排序数组中定位项目的位置。 二进制搜索通过将输入值与数组的中间元素进行…

SVN 出错信息汇总/错误信息一览表

编号出错信息信息解读剖析及解决方案1svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for ‘http://svn.moon.ossxp.com/svn/test’svn: 服务器发送了意外的返回值(500 Internal Server Error)&#xff0c;在响应 “OP…

c 应用程序开发框架_企业应用程序开发框架的分类

c 应用程序开发框架如果您使用Google“最佳Java框架”&#xff0c;那么您很可能会迷失本文 &#xff0c;它对Java Enterprise世界中的情况进行了很好的概述。 但是&#xff0c;从我的角度来看&#xff0c;它缺少一件非常重要的事情–对上述框架进行分类。 让我们看看这个生态系…

java mapper sql_Slardar Sql Mapper Framework for Java( Java 持久层框架一枚~)

slardar是一个sql mapping框架&#xff0c;其大概使用方式类似mybatis&#xff0c;没有采用hibernate那种orm的方式是因为个人觉得这种方式需要大量的处理sql&#xff0c;每次操作对象都要进行依次sql解析比较繁琐&#xff1b;转而想到mybatis这种把sql逻辑交给用户的方式还是比…

Linux 命令之 rsync -- 远程数据同步工具

没有时间整理&#xff0c;暂时参考这里&#xff1a;https://tool.lu/command/detail.html?namersync

黑洞路由 黑洞mac_无效方法为行为黑洞

黑洞路由 黑洞mac如果“认为有害”的文章本身不被认为是有害的&#xff0c;则本帖标题为“认为有害的作废方法”。 哦&#xff0c;好了 无效方法在大多数面向对象的代码库中无处不在。 在运行时中某个地方发生可变状态或I / O的直接后果是&#xff0c;您可以包装函数编程狂热者…

docker容器运行mysql持久化_OS x下使用Docker 持久化Mysql 数据出现问题

初学Docker &#xff0c;请见谅。系统: OS X 10.11.1 (15B42)运行docker工具&#xff1a;Docker Quickstart Terminal virtualbox 5.0.8docker 版本&#xff1a;Docker version 1.8.2, build 0a8c2e3镜像 docker imagesREPOSITORY TAG IMAGE ID …

Linux 命令之 rcp -- 远程文件复制

文章目录一、命令介绍一、命令介绍 rcp命令的英文是“remote file copy”&#xff0c;即远程文件复制&#xff0c;可以使在两台Linux主机之间的文件复制操作更简单。通过适当的配置&#xff0c;在两台Linux主机之间复制文件而无需输入密码&#xff0c;就像本地文件复制一样简单…

Java short 无符号右移_char类型byte类型或short类型进行无符号右移遇到的神奇问题...

代码package com.ggp.test.Third;/*** Author:ggp* Date:2019/7/27 17 23* Description:*/public class URShift {public static void main(String[] args) {byte b -1;System.out.println(Integer.toBinaryString(b));System.out.println(Integer.toBinaryString(b>>&g…

oracle adf_Oracle ADF和Oracle Jet一起工作。 建筑模式

oracle adf在本文中&#xff0c;我将考虑在Oracle ADF和Oracle Jet的组合之上实现应用程序的各种体系结构模式。 练习ADF的组织可能会考虑将Oracle Jet合并到现有项目中&#xff0c;以刷新外观并使其具有现代感和响应能力&#xff0c;并以新方式实施新功能。 它可能会考虑将Ora…

SVN 批量添加文件到版本库的命令脚本

svn status | grep "?" | awk {print 2} | while read line;do svn add{line};done;svn status 该命令用于查看文件信息&#xff0c;其中 M 代表修改&#xff0c;? 代表未知&#xff08;即需要添加的文件&#xff09;&#xff1b;grep "?" 查找包含 ? …

php 打包下载网络图片,PHP实现图片批量打包下载功能

上次遇到一个需要打包下载批量图片的问题&#xff0c;找了一下发现这个好方法&#xff0c;记录一下。首先新建一个zipfile打包类&#xff1a;class zipfile {var $datasec array ();var $ctrl_dir array ();var $eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00"…

tomee_OpenLiberty:注入错误,适用于TomEE和Wildfly

tomee当我在此博客上工作时&#xff0c;遇到此错误&#xff1a; [INFO ] DSRA8203I: Database product name : MySQL [INFO ] DSRA8204I: Database product version : 8.0.11 [INFO ] DSRA8205I: JDBC driver name : MySQL Connector/J [INFO ] DSRA8206I: JDBC …

Subversion(SVN)/TortoiseSVN 的分支合并方法

文章目录方法一方法二方法一 我改变主干分&#xff08;trunk 分支&#xff09;支本地的内容然后提交我在 RB 分支中进行其他更改并提交在主干的工作副本中&#xff0c;我使用 TortoiseSVN 从 RB 分支合并到主干分支&#xff0c;选择 Merge a range of revisions --> all re…

php 即时到账,paypal即时到账php实现代码

http://paypal.ebay.cn/integrationcenter/list__resource_2.html中文php开发简介&#xff1a;http://www.paypal-china.org/wangzhai/197.html以下是ecshop中paypal的支付代码这段代码是向paypal支付接口提交的{{{ //商家注册的邮箱}}}以下是官方提供的&#xff0c;接受到payp…

destroy 方法_线程方法destroy()和stop(Throwable)在JDK 11中删除

destroy 方法DrDeprecator &#xff08;Stuart Marks&#xff09;在core-libs-dev OpenJDK邮件列表上的消息“ RFR&#xff08;s&#xff09;&#xff1a;8204243&#xff1a;remove Thread.destroy&#xff08;&#xff09;和Thread.stop&#xff08;Throwable&#xff09; ”…

SVN 版本库管理实践

SVN 版本库中应该有两种划分体系&#xff0c;一是按产品划分&#xff0c;每个产品业务系统都按主干、分支结构划分&#xff1b;另外按项目划分。 项目分支归集暂时不能识别为产品的软件模块或补丁&#xff0c;项目分支的最初代码从产品分支体系中分支创建。当项目分支中的部分模…

java获取文件夹 路径,Java获取文件的路径

本文记录的是如何获取资源文件的路径.先看看我设置的文件目录结构&#xff0c;如下图所示:___Java Build Path的设置如下图所示, 主要看build project之后的文件输出目录:___在Java中有两种方式可以获取到文件的路径&#xff0c;通过下面的测试代码看看它们的不同:12345String …

java 示例_功能Java示例 第4部分–首选不变性

java 示例这是称为“ Functional Java by Example”的系列文章的第4部分。 在上一部分中&#xff0c;我们讨论了一些副作用&#xff0c;并且我想进一步详细说明如何通过将不可变性引入代码中来防止意外地对数据进行操作。 如果您是第一次来&#xff0c;最好是从头开始阅读。 …