TortoiseSVN 客户端安装失败

lx_13113610728 2018-01-01 03:33:32
最新svn客户端版本安装后启动报这个错误,而且右键没有svn的一些快捷键,求解。。。
...全文
429 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
szuzsq 2018-01-03
  • 打赏
  • 举报
回复
干净的win7-32-中文旗舰版 装TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi 是ok的
伊顺鸣 2018-01-01
  • 打赏
  • 举报
回复
TortoiseSVN-1.6.15版 svn apache 服务器 配置步骤: 1, httpd-2.2.16-win32-x86-openssl-0.9.8o.msi   除了端口设置以外,其他的请按照常识设置,其中端口我改为了 9999 。   随个人喜好吧,但尽量设置 5000 以上的端口号,最好不要用默认80 端口,因为这个端口很容易被其他的软件占用,造成冲突,使 Apache 无法启动服务。   我已经尝试过,这里友情提示。^_^   安装成功之后,尝试启动服务,在任务栏那里应该有一个 Apache Monitor,双击打开,点击 Start 按钮,如果亮了绿灯,表示成功安装。 2, Subversion-v1.5.2-Setup-en-us.msi   一路Next下去,默认设置安装即可。没任何报错,就安装成功了。 3, TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi   一路next下去,默认设置安装即可,正确安装完会要求重启。OK,重启。 4, 检查 Apache 安装目录下的 \modules 下是不是已经有了 mod_dav_svn.so 和 mod_authz_svn.so。 5, 检查 Apache 安装目录下的 \modules 下是不是已经有了 libdb44.dll(或者是 libdb52.dll )。 6, 检查 Apache 安装目录下的 \bin 下是不是有 libeay32.dll 和 ssleay32.dll。   注意:步骤4,5,6中,如果在 Apache 相应的目录下没有找到这些文件,可以从 Subversion 安装目录中的 \bin 下拷过来,直接放到 Apache 相应的文件夹中即可。 7, 配置 Apache 安装目录下的 \conf\httpd.conf   <1>查找:   #LoadModule dav_module modules/mod_dav.so   #LoadModule dav_fs_module modules/mod_dav_fs.so   将#号去掉,改为:(注意:每行开始不要有空格)   LoadModule dav_module modules/mod_dav.so   LoadModule dav_fs_module modules/mod_dav_fs.so   如果找不到上边两句,可直接把上边没#号的两行添加到文件中那一堆LoadModule后边。   <2>在文件中的一堆LoadModule后边添加如下两句:(注意,每行开始最好不要有空格)   LoadModule dav_svn_module modules/mod_dav_svn.so   LoadModule authz_svn_module modules/mod_authz_svn.so   <3>这一步是配置你的 SVN 版本库(Repository)目录以及从浏览器访问其的 URL 或 URI 。   在 httpd.conf 的结尾,添加如下字段:   DAV svn SVNListParentPath on SVNParentPath C:\SVN AuthType Basic AuthName "Subversion repositories" AuthUserFile C:\SVN\conf\passwd   注意:这里 /svn 是指客户端访问时 URI 的一部分,比如: svn://localhost:9999/svn/ 或者 svn://127.0.0.1:9999/svn/ 。   另外有的客户端不要 URI,要 URL,那就 http://localhost:9999/svn/ 可以了。   如果是本机或者是内部局域网,直接点击 "浏览按钮" -_-   下边的 C:\SVN (按照个人喜好自己建立,建议文件夹名称:英文无空格)就是版本库(Repository)的路径。   最后一行是设置密码用的,后面再说。 8, 配置资源库   建立文件夹,就是上边配置的那个C:/SVN,打开文件夹后右击会出现 TortoiseSVN , 点它,选择 “在此创建版本库”,如果有其它选项,默认就行。   成功的话,文件夹里多了以下两个文件和四个文件夹:      文件夹:conf, db, hooks, locks      文件:format, README.txt 9, 重启 Apache,如果重启失败,请确认 4. 5 .6. 7 你是否正确。 10, 通常这个时候 SVN 服务器已经搭建成功了,访问 http://localhost:9999/SVN/ 是不是有内容了?
SVN客户端用户使用手册 20061115 该文档将逐步教您如何在软件开发过程中使用svn客户端 环境模拟 现有项目名称:test 服务端版本库:test URL:http://10.155.11.10:81/svn 开发人员:devA,devB 版本库目录结构: test Doc(word文档) Soc(源代码) word_1 word_2 soc_1 sod_2 一.基本操作 第一步:安装客户端 到共享文件夹下,下载TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi安装程序,双击直接安装即可。安装成功后,右键单击鼠标会多出两个选项,分别是SVN checkout和Tortoise SVN。 第二步:建立工作区 项目开始之前,在本地PC的硬盘上,创建一个文件夹,文件夹命名随意(例如workspace ),该文件夹即作为软件开发者在项目开发过程中的工作区。 第三步:下载版本库 假如现在开发一个项目,配置管理员会在服务端建立一个该项目的版本库test 在workspace文件夹上,右键单击鼠标。选择SVN checkout,会出现如下窗口 图 1 在URL of repository中输入版本库地址,http://10.155.11.10:81/svn/test ,在Checkout dir中系统会自动添加第二步所创建的工作区目录。 在Revision中,选中HEAD revision,这样将会下载到版本库的最新版本。如果想下载库中的旧版本文件,可选中Revision,然后填入版本号即可。 如果不想下载整个版本库,而是只想下载自己负责的那部分模块,可以在URL后添加模块名,例如http://10.155.11.10:81/svn/test/Doc 。 单击OK,输入用户名和密码 第四步:修改版本库 对版本库的修改包括修改文件内容,添加删除文件,添加删除目录。 经过第三步的操作,本地的工作区文件夹,即workspace上会有绿色对勾出现,工作区下的文件也会带有绿色对勾,如图2 图2 如果对库中某一个文件进行了修改,系统会自动为这个文件和这个文件所在的各级父文件夹加上红色叹号,代表该文件或目录已经在本地被修改,如图3 图3 当所有对版本库的修改操作完毕后,右键单击工作区文件夹,选择commit提交新版本,输入密码后系统将把修改后的版本库上传到服务端,即完成一次对版本库的更新。 注意: 新版本提交之后,其他拥有写权限的用户也许会重复以上几步的操作,完成对版本库的再一次更新。所以,每次在工作区文件夹下修改本地版本库之前,必须首先对本地版本库执行一次更新(右键单击工作区,选择SVN Updata),将最新的版本下载到本地,然后再进行修改操作。 二.其他操作 在日常的软件开发过程中,除了以上介绍的下载,提交,更新操作外,还有另外几种常用操作。 (1)比较文件的不同之处 当对soc_1做了修改之后,soc_1文件会出现红色叹号,表示已经修改,如果想查看修改后的soc_1文件与修改前有何不同,可以右键单击此文件,选择diff,系统探出一个窗口,如图3,窗口分为两个部分,左边为更改之前的版本,右边为更改之后的版本。并在不同之处作出标记和说明。如图4 图4 如果是word文档的话,选择diff之后,系统会打开一个word文档,并在其中标出修改后的版本与修改前有何不同。如图4.1 图4.1 (2)查看日志 如果想查看一个文件的日志,例如soc_1,右键单击这个文件,选择show log,系统会踏出一个窗口,并在窗口中显示soc_1各个版本的log。如图4 图5 (3)查看版本树 如果想查看soc_1文件的版本树,右键单击该文件,选择Revision graph,系统将会打开一个窗口,并在窗口中显示该文件的版本树。如图6。 图6 之所以只显示了4.5.6.7四个版本,是因为选择了只显示发生过变化的版本。即1.4.5.6.7每一个版本都有不同的地方,都是经过用户修改后提交的。而2.3两个版本是与版本1相同的。 (4)下载某个文件的旧版本 如果想要得到某个文件的旧版本,只需在该文件上单击右键,选择Updata to revision…即可。系统会提示输入版本号。例如要下载soc_1的第五个版本,只需填入5即可。如图7。查看完版本5的文件后,如果想在此回到最新版本,只需要对soc_1运行Updata即可。 图7 (5)重名名和删除文件 如果要删除一
安装 Apache 安装 Apache 的先决条件是有一台安装了 Windows 2000,Windows XP SP1+,Windows 2003,Vista 或 Windows Server 2008 的计算机。 警告 请注意,Windows XP 如果没有安装 SP1 将会导致不正常的网络传输,从而搞坏你的版本库! 1. 从 http://httpd.apache.org/download.cgi 下载最新版本的 Apache,请确认你下载的版本是 2.2.x - 1.3.xx 的版本不能工作! The msi installer for Apache can be found by clicking on other files, then browse to binaries/win32. You may want to choose the msi file apache-2.2.x-win32-x86-openssl-0.9.x.msi (the one that includes OpenSSL). 2. 一旦你有了 Apache2 安装程序,你可以双击它,然后它会指导你的安装过程。请确认你输入的服务器 URL 正确(如果你的服务器没有 DNS 名称,请直接输入 IP 地址)。我建议为所有用户在 80 端口安装 Apache 服务。注意: 如果你已经有了 IIS 或其他监听 80 端口的程序,安装失败。如果发生这种情况,直接到程序的安装目录 \Apache Group\Apache2\conf,打开 httpd.conf。编辑文件的 Listen 80 为其他可用的端口,例如 Listen 81,然后重新启动 - 这样就不会那个问题了。 3. 现在可以测试 Apache 服务器是否正确运行,将浏览器指向 http://localhost/ - 将会看到一个预先配置的网站。 小心 如果你决定将Apache安装为服务,缺省情况以本地系统帐户运行会发出警告,更安全的方法是为Apache创建一个单独的运行帐户。 请确认Apache运行的帐户是版本库目录的访问控制列表(右键目录|属性|安全)中一个明确的条目,对目录有完全的控制能力,否则,用户不能提交他们的修改。 即使Apache运行于本地系统,你仍然需要这个条目(这种情况下将是SYSTEM帐户)。 如果没有配置 Apache 的此访问权限,你的用户会得到“拒绝访问(Access denied)”的错误信息,在 Apache 的错误日志中的错误代码是 500。 安装 Subversion 1. Download the latest version of the Subversion Win32 binaries for Apache. Be sure to get the right version to integrate with your version of Apache, otherwise you will get an obscure error message when you try to restart. If you have Apache 2.2.x go to http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100. 2. 运行Subversion安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。 3. 使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件/httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program files\apache group\apache2\modules )。 4. 从 Subversion 安装目录将 /bin/libdb*.dll 和 /bin/intl3_svn.dll 复制到 Apache 的 bin 目录。 5. 使用记事本之类的文本编辑器修改Apache的配置文件(通常是 C:\Program Files\Apache Group\Apache2\conf\httpd.conf),做出如下修改: 去掉以下几行的注释(删除 '#'标记): #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so 将以下两行到 LoadModule 节的末尾。 LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 配置 现在你已经配置了 Apache 和 Subversion,但是 Apache 不知道如何处理 Subversion 客户端,例如TortoiseSVN。为了让 Apache 知道哪个 URL 是用作 Subversion 版本库,你需要使用任意文本编辑器(例如记事本)编辑 Apache 的配置文件(通常是 c:\program files\apache group\apache2\conf\httpd.conf): 1. 在配置文件最后添加如下几行: DAV svn SVNListParentPath on SVNParentPath D:\SVN #SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user 这个配置告诉 Apache 你所有的 Subversion 版本库位于 D:\SVN。这些版本库对外的 URL 是: http://MyServer/svn/。访问被文件 passwd 中的用户/密码限制。 2. 为了创建 passwd 文件,再次打开命令行提示符(DOS 窗口),进入 apache2 目录(通常是 c:\program files\apache group\apache2),通过输入下面的命令创建文件 bin\htpasswd -c passwd 它将会创建名为 passwd 的文件用于认证。用下面的命令增加其它用户 bin\htpasswd passwd 3. 再次重启Apache服务。 4. 将浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你此前创建的版本库名),如果一切正常,你会被提示输入用户名和密码,然后你会看到版本库的内容。 你刚才输入的简短解释是: 表 3.1. 设置 Apache 的 httpd.conf 设置 解释 意思是Subversion版本库的URL是http://MyServer/svn/ DAV svn 告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。 SVNListParentPath on 对于 Subversion 1.3 或者更高版本,这个指示会列出所有 SVNParentPath 中的版本库。 SVNParentPath D:\SVN 告诉Subversion需要查看的版本库位于D:\SVN之下 SVNIndexXSLT "/svnindex.xsl" 使用它可以在用浏览器浏览时更好看。 AuthType Basic 激活基本认证,就是用户名/密码 AuthName "Subversion repositories" 用来说明何时弹出要求用户输入认证信息的认证对话框 AuthUserFile passwd 指定使用的认证密码文件 AuthzSVNAccessFile 位置Subversion版本库的访问控制文件的路径 Require valid-user 指定只有输入了正确的用户/密码的用户可以访问URL 但是那只是一个例子。对于 Apache 你有很多可能的选择。 * 如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行 Require valid-user to Require valid-user * 使用 passwd 可以整体的控制对版本库的访问,但是如果你希望精确的控制版本库目录访问,你可以去掉下行的注释 #AuthzSVNAccessFile svnaccessfile ,并且创建 Subversion 的访问控制文件。Apache 将会确保只有有效的用户可以访问你的 /svn 目录,然后将用户名传递给 Subversion 的 AuthzSVNAccessFile 模块,这样就可以根据 Subversion 访问控制文件内的规则实现更细粒度的访问控制。请注意路径可以是 repos:path 或简单的 path,如果你不指定特定的版本库,访问控制规则会应用到 SVNParentPath 下所有的版本库。使用的授权策略文件的格式在“路径为基础的授权”一节描述。 * 如果要使浏览器浏览仓库时更“漂亮”,请将去掉下行注释 #SVNIndexXSLT "/svnindex.xsl" ,将文件 svnindex.xsl, svnindex.css 和 menucheckout.ico 放到你的文档根目录中(通常是 C:/Program Files/Apache Group/Apache2/htdocs)。 这个目录在 Apache 配置文件中用 DocumentRoot 指示设置。 你可以直接在我们的代码库http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex中拿到这三个文件。如果访问这个链接需要认证,输入用户名称 guest,无需密码。 TortoiseSVN 版本库中的 XSL 文件有个特性:如果你用浏览器浏览版本库,那么每个版本库中的目录右边会有个图标。如果你点击此图标,那么 TortoiseSVN 会为此 URL 启动检出对话框。 多版本库 如果你使用 SVNParentPath 指示,你就不必在每次添加新 Subversion 版本库时修改 Apache 的配置文件,只需要在第一个版本库所在的位置建立新的版本库就可以了。在我的公司,我可以使用 SMB(普通的 windows 文件访问)直接访问服务器的文件夹,所以我直接在那里创建一个目录,运行 TortoiseSVN 命令TortoiseSVN → 在此创建版本库...,然后一个新的项目建立了... 如果你使用 Subversion 1.3 或更高版本,可以使用 SVNListParentPath on 指示,这样当你使用浏览器访问父路径而不是具体某个版本库时 Apache 就会显示所有版本库列表。 路径为基础的授权 mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。 一个可能的例子: [groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike training = zak # Default access rule for ALL repositories # Everyone can read, admins can write, Dan German is excluded. [/] * = r @admin = rw dangerman = # Allow developers complete access to their project repos [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Give the doc people write access to all the docs folders [/trunk/doc] @docs = rw # Give trainees write access in the training repository only [TrainingRepos:/] @training = rw 请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。 认证和授权是不同的处理过程,如果用户希望获得对版本库的访问,他需要通过全部检查,即通常的认证需求和访问控制文件的授权需求。 使用 Windows 域认证 你已经注意到了,你需要为每个用户在passwd文件中创建用户名/密码条目,如果(因为安全原因)他们希望周期性的修改他们的密码,你需要手动的做出修改。 但是对于此问题有另一个解决方案 - 至少是你在使用域控制器的 LAN 中访问版本库时: mod_auth_sspi! 最初的 SSPI 是由 Syneapps 提供的,包括源代码。但是它的开发已经终止。不过不要失望,社区重新拾起代码并进行了改进,它现在的新主页在SourceForge。 * 下载此匹配你的 Apache 版本的模块,将文件mod_auth_sspi.so复制到 Apache 的 modules 目录。 * 编辑 Apache 的配置文件: 增加一行 LoadModule sspi_auth_module modules/mod_auth_sspi.so 到 LoadModule 节。确认你在下行之前插入此行 LoadModule auth_module modules/mod_auth.so * 为了让 Subversion 领域使用此认证类型,你需要将 AuthType Basic 修改为 AuthType SSPI 并且在 中增加 SSPIAuth On SSPIAuthoritative On SSPIDomain SSPIOmitDomain on SSPIUsernameCase lower SSPIPerRequestAuth on SSPIOfferBasic On 如果你没有域控制器,可以将域控制器的名称置为 。 请注意,当你使用 SSPI 认证时,没有必要再使用 AuthUserFile 行定义密码文件,Apache 使用 Windows 域验证你的用户名和密码,你需要更新 svnaccessfile 中的用户列表来引用 DOMAIN\username。 重要 The SSPI authentication is only enabled for SSL secured connections (https). If you're only using normal http connections to your server, it won't work. To enable SSL on your server, see the chapter: “用 SSL 使服务器更安全”一节 提示 Subversion 的 AuthzSVNAccessFile 文件对用户名大小写敏感(JUser 与 juser 不同)。 在微软的世界,Windows 域和用户名不是大小写敏感。即使如此,一些网络管理员还是喜欢创建首字母大写的用户帐号(例如 JUser)。 使用SSPI的一个问题是用户名和密码是用户在提示输入时发送到Subversion的,而IE经常会不管你的帐户是如何建立的都会自动发送你的用户名。 结果就是你必须为每个用户在 AuthzSVNAccessFile 中至少创建两个条目:一个小写的条目和一个与 IE 传递给 Apache 一样的条目,你也需要训练你的用户在通过 TortoiseSVN 输入访问版本库的凭证时使用小写字母。 Apache 的错误和访问日志是你最好的朋友,例如帮助你检测传递给 Subversion 的 AuthzSVNAccessFile 模块的用户名,你或许需要试验 svnaccessfile 中用户字符串的精确格式(例如 DOMAIN\user 还是 DOMAIN//user)来使一切工作正常。 多重认证源 也可以为Subversion使用不止一个的认证源,为此,你需要将每一种认证设置为non-authoritative,这样Apache会在多个源检查用户名/密码。 一个常见的场景就是同时使用Windows域和passwd文件认证,这样你可以为没有Windows域帐户的用户提供访问SVN的权限。 * 为了同时启用 Windows 域认证和 passwd 文件认证,在 Apache 配置文件的 块中添加如下条目: AuthAuthoritative Off SSPIAuthoritative Off 下面是组合使用 Windows 域认证和 passwd 文件认证的完整配置: DAV svn SVNListParentPath on SVNParentPath D:\SVN AuthName "Subversion repositories" AuthzSVNAccessFile svnaccessfile.txt # NT Domain Logins. AuthType SSPI SSPIAuth On SSPIAuthoritative Off SSPIDomain SSPIOfferBasic On # Htpasswd Logins. AuthType Basic AuthAuthoritative Off AuthUserFile passwd Require valid-user 用 SSL 使服务器更安全 Even though Apache 2.2.x has OpenSSL support, it is not activated by default. You need to activate this manually. 1. In the apache config file, uncomment the lines: #LoadModule ssl_module modules/mod_ssl.so and at the bottom #Include conf/extra/httpd-ssl.conf then change the line SSLMutex "file:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_mutex" to SSLMutex default 2. 然后你需要创建一个 SSL 证书。为此打开一个命令行窗口,进入 Apache 目录(例如 C:\program files\apache group\apache2),然后输入命令: bin\openssl req -config bin\openssl.cnf -new -out my-server.csr 你会被询问密句。请不要使用简单的单词,而是使用整段话,例如一段诗,越长越好。你也需要输入服务器的 URL,其他所有问题都是可选的,但是我们建议你输入这些信息。 Normally the privkey.pem file is created automatically, but if it isn't you need to type this command to generate it: bin\openssl genrsa -out conf\privkey.pem 2048 Next type the commands bin\openssl rsa -in conf\privkey.pem -out conf\server.key and bin\openssl req -new -key conf\server.key -out conf\server.csr -config conf\openssl.cnf and then (on one line) bin\openssl x509 -in conf\server.csr -out conf\server.crt -req -signkey conf\server.key -days 4000 This will create a certificate which will expire in 4000 days. And finally enter: bin\openssl x509 -in conf\server.cert -out conf\server.der.crt -outform DER These commands created some files in the Apache conf folder (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert). 3. 重启 apache 服务。 4. 将你的浏览器指向https://servername/svn/project ... SSL 和 Internet Explorer 如果你使用SSL保护你的服务器,并使用windows域来进行认证,你会发现不能使用IE浏览版本库了,不需要担心-那只是因为IE没有经过认证,其他浏览器没有这个问题,TortoiseSVN和其他Subversion客户端仍然可以得到认证。 如果你一直希望使用IE浏览你的版本库,你可以选择: * 在 Apache 的配置文件定义一个单独的 指示,增加 SSPIBasicPreferred On。这将使 IE 能够认证,但是其他浏览器和 Subversion 不能对这个领域认证。 * 也提供未加密(没有SSL)认证的浏览,奇怪的IE在没有使用SSL的认证时没有任何问题。 * 在 SSL 的“标准”配置中,通常在 apache 的虚拟 SSL 主机内有下面的内容: SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 这种设置的充足理由参见 http://www.modssl.org/docs/2.8/ssl_faq.html#ToC49。但是如果你希望使用 NTLM 认证,就必须使用 keepalive。如果启用全部 SetEnvIf,你就可以使 IE 用 Windows 认证访问运行在 Win32 上加载了 mod_auth_sspi 模块的 Apache。 强制 SSL 访问 当你设置了 SSL 让你的版本库更安全,你一定希望关闭普通的非 SSL (http) 访问。为此,你需要在 Subversion 的 增加指示: SSLRequireSSL。 这是一个 实例: DAV svn SVNParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user

2,100

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧