我在将一个缩小的JavaScript文件检入Clearcase时遇到问题。有问题的文件是单行,远远超过8000 character limit that Clearcase imposes。
我知道JavaScript解释器在换行时会做一些tricky things inserting semicolons,但我想知道在分号后添加换行符是否总是安全的。这样做是否有可能改变JavaScript代码的含义?
要回答您的直接问题:是的,您可以在结束语句的分号后添加换行符。文件中可能还有分号的其他用法(例如在字符串或正则表达式中),您不应该触摸它们。
我还有另一个问题:你为什么要检查一个缩小的JavaScript文件?我认为最好检查原始的详细JavaScript源代码。另外,版本控制系统通常对一行文件无效。如果您已经在检查原始JavaScript,则现在必须保持两个文件之间的一致性(即,当您更改一个文件时,必须刷新另一个文件)。我建议检查一个脚本,在部署它时将缩小原始版本,而不是将缩小版本保留在Clearcase中。
分号可以封装在一个字符串中。在字符串中添加换行符会改变javascript的含义。
如果分号在字符串或正则表达式中(例如var rex = /;/g;
- 在第二个分号后插入换行符是唯一安全的),那么是的,这显然是个问题。否则,在声明后有一个换行符总是安全的。
管理员或开发人员需要在存储工件的每个VOB上运行此命令(在所需VOB的上下文中)(不是100%确定-supertype,“binary_file”可能更好)(不是100%确定-mergetype, “复制”可能会更好!)(您可以随后通过-replace选项更改此选项)
cleartool mkeltype -nc -supertype text_file -manager z_whole_copy -mergetype auto text_file_minified
这可用于更正尝试签入失败的文件。它们可能是用一种“text_file”创建的,每行text_file类型不能超过8000个字符。
cleartool chtype -nc -force text_file_minified jquery-1.8.2.min.js
将此文件放在您签入的桌面/开发计算机上。删除任何前导空格。
# AAA.magic
# This needs to copied to all developer desktops
# copy it next to default.magic (or cc.magic)
# under ...\ClearCase\config\magic
# Leave these from the default.magic just in case
# files are processed in alphabetic order, hence the AAA prefix
# Check stat type
directory : -stat d ;
block_device : -stat b ;
char_device : -stat c ;
socket : -stat s ;
fifo : -stat f ;
# minified javascript and CSS
# some of these violate the 8000 character per line limit
# of clearcase text tools/type managers
# *.min.js
text_file_minified : -name "*.[mM][iI][nN].[jJ][sS]" ;
# *.min.css
text_file_minified : -name "*.[mM][iI][nN].[cS][sS][sS]" ;
Javascript中的分号始终确定代码行的结尾。
鉴于此,除非该分号是字符串的一部分,否则在分号后添加换行符应始终是安全的。