请找到以下代码。
Dir.chdir('/home/user/Source/pxe/')do
system("git log "+ version_one +" " + version_two +" --pretty=format:'%h %ad%x09%an%x09%s' --date=short", :out => ['gitlog.txt', 'a'])
end
根据用户的版本输入,我在两个版本之间执行git log
,并将日志保存在pxe文件夹的gitlog.txt
中。
现在我的问题是,如何在另一个目录中创建此gitlog.txt
并将日志附加到同一个文件,比如说新文件路径为:/home/user/server-diff/gitlog.txt
我以下面的方式尝试过但没有写入文件并在执行时出错
Permission denied- /home/user/server-diff/gitlog.txt (Errno::EACCES)
:
file = File.new("/home/user/server-diff/gitlog.txt", "w")
Dir.chdir('/home/user/Source/pxe/')do
system("git log "+ version_one +" " + version_two +" --pretty=format:'%h %ad%x09%an%x09%s' --date=short", :out => [file, 'a'])
end
请让我知道如何继续,我还有一个与此相关的问题。
如果问的问题不明确,请告诉我。
答案 0 :(得分:0)
您在system
调用中混合使用两种方式来使用文件。您可以预先使用文件对象(确保以“追加”模式而不是“写入”模式打开它)然后只需将该对象传递给system
而不需要"a"
:
file = File.new("/home/user/server-diff/gitlog.txt", "a")
Dir.chdir('/home/user/Source/pxe/')do
system("git log "+ version_one +" " + version_two +" --pretty=format:'%h %ad%x09%an%x09%s' --date=short", :out => file)
end
或者你可以完全摆脱file = ...
行并将文件名传递给system
,保留"a"
选项:
Dir.chdir('/home/user/Source/pxe/')do
system("git log "+ version_one +" " + version_two +" --pretty=format:'%h %ad%x09%an%x09%s' --date=short", :out => ["/home/user/server-diff/gitlog.txt", "a"])
end
此外,您还需要确保您要写入的目录存在:
Dir.mkdir("/home/user/server-diff") unless Dir.exists?("/home/user/server-diff")
如果您收到“拒绝权限”错误,则需要确保您确实拥有该文件夹的写入权限(如果该文件夹已存在,则为文件)。