有什么方法可以把编程中间的一段宏程序编程给忽略??

[c#]如何忽略在 WCF 服务调用中的区分大小写属性名称?
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
你好我不知道有关可能性要调用 WCF 方法从客户端什么会忽略区分大小写属性名称 (客户端我正与 JSON 小写属性名称,但服务器端与大写)。WCF 不能在这种情况下映射的属性。是否可能使用某些 WCF 属性或等吗?
public interface IMyWCF
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
bool UpdateUser(User user);
[Serializable]
[DataContract]
public class User : ICloneable
[DataMember]
[JsonProperty(PropertyName = "login")]
[StringLength(40, ErrorMessage = "The Login value cannot exceed 40 characters. ")]
[DefaultValue("")]
public String Login { }
[DataMember]
[JsonProperty(PropertyName = "id")]
public int UserId { }
解决方法 1:
您可以使用 Name 属性的 [DataMember] 属性,将属性名称映射:
[DataContract]
public class User : ICloneable
[DataMember(Name = "login")]
[JsonProperty(PropertyName = "login")]
[StringLength(40, ErrorMessage = "The Login value cannot exceed 40 characters. ")]
[DefaultValue("")]
public String Login { }
[DataMember(Name = "id")]
[JsonProperty(PropertyName = "id")]
public int UserId { }
更新以下评论: 没有任何你可以使用启用不区分大小写反序列化 WCF 所使用的默认序列化程序上的旋钮。虽然有一些选项 (无理想)。您可以更改的序列化程序使用 JSON.NET (哪些可以做,请看,但不是很容易) 和使用中的序列化程序序列化程序设置来忽略大小写。我觉得你也应该能够添加附加属性 (它可以是私有的如果在部分信任环境中运行应用程序除外)、 要映射额外支持情况下 ;类似于下面的代码:
[DataContract]
public class User
[DataMember]
public String Login { }
[DataMember]
private String login { get { return this.L } set { this.Login = } }
[DataMember]
public int UserId { }
[DataMember]
private int id { get { return this.UserId; } set { this.UserId = } }工程师结对编程能否大幅提高工作效率?- 百度派
{{ mainData.uname }}
:{{ mainData.content }}
{{ prevData.uname }}
:{{ prevData.content }}
{{ mainData.uname }}
:{{ mainData.content }}
0 || contentType !== 1" class="separate-line">
:{{ item.content }}
3">等{{ uList.length }}人邀请你回答
工程师结对编程能否大幅提高工作效率?
问题说明(可选):
扫一扫分享到微信
{{ log.sign }}
可能对你的问题感兴趣
暂无相关用户
,才能邀请用户
,才能邀请用户
你已邀请15人,不可再邀请
结对编程的定义:结对编程的定义是两位开发师坐在一台电脑前,一个负责输入代码,另外一位负责检测输入代码的正确率,敲打键盘和鼠标的工程师为“驾驶员”,负责检测和协助的工程师称为“领航员”,领航员...
结对编程的定义:结对编程的定义是两位开发师坐在一台电脑前,一个负责输入代码,另外一位负责检测输入代码的正确率,敲打键盘和鼠标的工程师为“驾驶员”,负责检测和协助的工程师称为“领航员”,领航员检视的同时还必须负责考虑下一步的工作方向,比如可能出现的问题以及改进措施等。&结对编程的优势:有助于提高代码设计质量;程序员在结对编程中可以互相帮助,相互传递知识,打破只是的壁垒。因为以前在单人项目开发中,程序的每一个部分都是一个人完成的,而每个人在考虑问题时总会有一些不全面的地方或者是没有想到更好地更快捷的方法去处理问题,而结对编程就能解决这个问题。结对编程可以提高工作效率,比方说当自己一个人写代码时难免会干一些其他的事情,毕竟电脑一般都连着网,有人说程序员每天工作8小时其中3小时在上网剩余5小时在上网。所以当后面有个人在监督你时,你就必须把全部时间用在编程上了,这样效率自然就高了。结对编程可以有效地提高程序质量。由于每个人的惯性思维,经常会写出bug但是很难察觉到,而搭档在旁边看着时,他会很轻易地就看出你的这种错误,毕竟是四只眼睛嘛,同时他还会根据你写的代码来思考后面的程序部分,然后与自己考虑的编程方向比较,吸取优点改正缺点,提高程序的质量。结对编程的缺点:这里我认为找到一个适合自己的搭档很重要,就想结婚一样,和谁结婚是需要慎重选择的,结对编程已不是随便指两个人就说:今天起你们两人一起把这个xxx做了!老师的这种随机抽签的方式很不好,如果两人合不来,这样反而适得其反。总结:无论是哪一个团队都应该保持成员间平等协商和相互帮助,互相的配合和帮助,知识的共享,培养完整团队成员积极、主动、开放、协作、知识共享的心态,这样能增进结对编程的效率;实施初期需要精心培养、辅导,帮助团队成员客户个性冲突和习惯差异。
扫一扫分享到微信
结对编程的定义是两位开发师坐在一台电脑前,一个负责输入代码,另外一位负责检测输入代码的正确率,敲打键盘和鼠标的工程师为“驾驶员”,负责检测和协助的工程师称为“领航员”,领航员检视的同时还必须...
结对编程的定义是两位开发师坐在一台电脑前,一个负责输入代码,另外一位负责检测输入代码的正确率,敲打键盘和鼠标的工程师为“驾驶员”,负责检测和协助的工程师称为“领航员”,领航员检视的同时还必须负责考虑下一步的工作方向,比如可能出现的问题以及改进措施等。结对编程的优势:有助于提高代码设计质量;程序员在结对编程中可以互相帮助,相互传递知识,打破只是的壁垒。因为以前在单人项目开发中,程序的每一个部分都是一个人完成的,而每个人在考虑问题时总会有一些不全面的地方或者是没有想到更好地更快捷的方法去处理问题,而结对编程就能解决这个问题。那么工程师跟编程之间又有什么关系呢?Program editing is an amazing thing, a manifestation of the human expression of wisdom in machines。编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机虽然功能十分强大。可以上网、玩游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。
扫一扫分享到微信
啊工程师啊。。我爸爸就是工程师,好多年咯。Engineer is an engineer, because they put the art work, create miracles。工程师左拾遗是工程师,是因为他们能够将艺术放进工作里面。工程师(Engineer)和...
啊工程师啊。。我爸爸就是工程师,好多年咯。Engineer is an engineer, because they put the art work, create miracles。工程师左拾遗是工程师,是因为他们能够将艺术放进工作里面。工程师(Engineer)和科学家(Scientists)往往容易混淆。科学家努力探索大自然,以便发现一般性法则(General principles),工程师则遵照此既定原则,从而在数学和科学上,解决了一些技术问题。科学家研究事物,工程师建立事物。这一想法,可视为表达这句话,“科学家问为什么,工程师问有什么用?(意指科学家探索原理,工程师懂了原理就想实现其应用)”(Scientists ask why,Engineers ask why not?)。那么工程师跟编程之间又有什么关系呢?Program editing is an amazing thing, a manifestation of the human expression of wisdom in machines。编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机虽然功能十分强大。可以上网、玩游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。所以厉害的工程师,还是能够提高编程效率的。
扫一扫分享到微信
工程师结对编程能否大幅提高工作效率?
,才能进行回答
一个问题只能回答一次,请&nbsp点击此处&nbsp查看你的答案
4人关注了此问题PHP程序员必须遵循的PHP编程准则-PHP教程_WEB开发者-专业的开发人员学习交流的平台
PHP程序员必须遵循的PHP编程准则
&  怎样才能成为一个优秀的PHP开发者?这肯定是每一位PHP新手都在提出的问题。其实要成为一名PHP编程高手并不容易,真正的PHP高手还需要考虑更多的其它问题。那么如何才能更快的成为一名优秀的PHP开发者呢?跟随绿茶小编一起来看看吧!  以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则:  ◆懒惰是金  ◆编写漂亮的代码  ◆追求程序的速度,而不是编程的速度 懒惰是金& & & & 对于一个程序员来说,懒惰的方法有两种:  其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或者项目中去。其二是编写一些有用的代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复的劳动,自然就可以懒惰一点了。这两种偷懒的方法都非常适合PHP程序员了。  首先,PHP是在自由开放的环境中诞生和成长的一门语言。在世界各地,有成千上万的程序员,他们一直在为PHP的完美而不断奋斗,他们也愿意和别人分享自己的聪明才智和自己编写的代码。你每天都可以从一些PHP网站、邮件列表、新闻组发现大量的优秀的程序代码。&  接下来,为大家介绍几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。如果你能把它们加入到你自己的函数库中,迟早你将会发现自己受益无穷。  1.通用数据库处理函数  和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。  在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库&&不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。  一些优秀的PHP开发者非常喜欢使用这些函数,因为可以直接使用一些简单的诸如&query&、&next_record&之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。如果你需要这些函数,你可以通过访问以下的几个网址而得到:  ◆http://phplib.netuse.de/  ◆/browse.html/package/20  ◆/  2.变量调试函数  PHP程序的调试一直是一件让人头疼的事,它既不像VB等高级语言那样有集成的编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行。其实,我们完全可以通过灵活地使用echo语句来完成对PHP的调试工作。下面的几个函数可以让你随时查看程序中任何变量的类型及其值。  function ss_array_as_string (&$array, $column = 0) {  $str = &Array(n&;
while(list($var, $val) = each($array)){  for ($i = 0; $i & $column+1; $i++){
$str .= & &;  }  $str .= $var. ==& ;  $str .= ss_as_string($val, $column+1).&
n&; } for ($i = 0; $i & $ $i++){  $str .= & &; } return $str.);  }
 function ss_object_as_string (&$object, $column = 0) { if
(emptyempty($object-&classname)) {  return &$object&; } else {  $str =
$object-&classname.&( n&; while (list(,$var) =
each($object-&persistent_slots)) {  for ($i = 0; $i & $ $i++){ $str
.= & &;  }  global $$  $str .= $var. ==& ;  $str .= ss_as_string($$var,
column+1).& n&; } for ($i = 0; $i & $ $i++){  $str .= & &; } return
$str.); }  }  function ss_as_string (&$thing, $column = 0) {  if
(is_object($thing)) { return ss_object_as_string($thing, $column);  }  elseif
(is_array($thing)) { return ss_array_as_string($thing, $column);  }  elseif
(is_double($thing)) { return &Double(&.$thing.&)&;  }  elseif (is_long($thing))
{ return &Long(&.$thing.&)&;  }  elseif (is_string($thing)) { return
&String(&.$thing.&)&;  }  else { return &Unknown(&.$thing.&)&;  }  }  需要的时候,在程序中简单地加入下面的一条代码即可查看程序中的所使用的变量(包括数组和对象)的类型和值:  echo ss_as_string($my_variable);  使用下面的语句,我们可以直接查看程序中所有的变量的值:  echo ss_as_string($GLOBALS);  3. 控制Log信息的函数  调试PHP  程序的另外一种重要的方法就是查看Log信息。如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。下面的几个函数可以方便地实现这个功能。  $ss_log_level = 0; $ss_log_filename = /tmp/ss- $ss_log_levels = array(
 NONE =& 0,  ERROR =& 1,  INFO =& 2,  DEBUG =& 3); function
ss_log_set_level ($level = ERROR) {  global $ss_log_  $ss_log_level =
$ } function ss_log ($level, $message) {  global $ss_log_level,
$ss-log-  if ($ss_log_levels[$ss_log_level] &
$ss_log_levels[$level]) { // 不显示Log信息  }  $fd =
fopen($ss_log_filename, &a+&);  fputs($fd, $level. - [.ss_timestamp_pretty().] -
.$message.&n&);  fclose($fd);   } function ss_log_reset () {  global
$ss_log_  @unlink($ss_log_filename); }  在上面的函数中,有四个Log级别变量。运行PHP程序时,只有当Log的级别低于预设的级别值时,Log信息才可以被记录和显示出来。  例如,在程序中加入如下的一条语句:  ss_log_set_level(INFO);  那么,运行PHP程序时,只有ERROR和INFO级别的LOG信息才能被记录和显示出来,DEBUG级的信息则被忽略了。除此之外,我们还可以设定显示的信息内容,其语句如下:  ss_log(ERROR, &testing level ERROR&);  ss_log(INFO, &testing level INFO&);  ss_log(DEBUG, &testing level DEBUG&);  4.速度测试函数  为了优化代码,我们需要一种可以测试代码运行时间的方法,从而来选择最优的代码。下面的函数可以测试运行代码所需的时间:  function ss_timing_start ($name = default) {  global
$ss_timing_start_  $ss_timing_start_times[$name] = explode( ,
microtime()); } function ss_timing_stop ($name = default) {  global
$ss_timing_stop_  $ss_timing_stop_times[$name] = explode(, microtime()); }
function ss_timing_current ($name = default) {  global $ss_timing_start_times,
$ss_timing_stop_  if (!isset($ss_timing_start_times[$name])) { return 0;
 }  if (!isset($ss_timing_stop_times[$name])) { $stop_time = explode(,
microtime());  }  else { $stop_time = $ss_timing_stop_times[$name];  }  $current
= $stop_time[1] - $ss_timing_start_times[$name][1];  $current += $stop_time[0] -
$ss_timing_start_times[$name][0];  return $ }  现在可以轻松地检查任何一段代码的执行时间了,甚至我们可以同时使用多个计时器,只需在使用上述的几个函数时设定不同的参数作为计时器的名称就可以了。  5.调试和优化数据库的操作  对于数据库来说,运行速度是至关重要的。尽管很多书籍和文章都讲授了一些快速运行数据库的方法,但是所有的方法都必须经过实践的检验。下面我们将把PHPLib函数库中的query()函数和上面介绍的几个函数综合起来编写成新的query()函数,和原先的函数相比,这个函数增加了运行时间的监测功能。&  function query($Query_String, $halt_on_error = 1) {  $this-&connect();
 ss_timing_start();  $this-&Query_ID =
@mysql_query($Query_String,$this-&Link_ID);  ss_timing_stop();  ss_log(INFO,
ss_timing_current(). Secs - .$Query_String);  $this-&Row = 0;
 $this-&Errno = mysql_errno();  $this-&Error = mysql_error();  if
($halt_on_error && !$this-&Query_ID) { $this-&halt(&Invalid SQL:
&.$Query_String);  }  return $this-&Query_ID; }  编写漂亮的代码  1.将后台程序与前端程序分开  在编写PHP程序时,有些代码是用来处理一些事务,例如操作数据库、进行数学运算等,而另外的一些代码则只是事务处理的结果显示出来,例如一些使用echo语句将结果以HTML的格式显示在Web浏览器上的PHP代码以及那些直接嵌入PHP程序的HTML代码。首先我们应该清晰地区分这两种代码,把前者称为后台程序,把后者称为前端程序。  因为PHP是一种嵌入式编程语言,也就是说,所有的PHP代码都可以嵌入到HTML代码之中,这为程序的编写带来了许多便利之处。但是,&物极必反&,如果在一段较长的程序中将PHP代码和HTML代码混合编写,这将使程序杂乱无章,不利于程序的维护和阅读。  所以我们需要尽可能地将这些程序中混杂于HTML代码中的PHP代码移植出来,在专门的文件中将这些代码封装成函数,然后在HTML代码中使用include语句来包含这些文件,在适当的位置调用这些函数即可。&  这种做法一方面使HTML代码和PHP代码都简单易读,另一方面因为HTML代码需要不断更新,而这种分离的方法可以确保后台程序不会被破坏。同前端程序不同,后台程序更多追求的是稳定、结构化,极少更改,所以应该认真地设计和管理。其实,在设计台程序时,投入大量时间是值得的,&现在栽树,以后乘凉&,在以后的设计工作中将可以轻松地使用现在编写的后台程序。  2.灵活使用包含文件  正如前面所说的那样后台程序应当安排在一系列的包含文件中。包含文件可以通过include语句在需要时动态装入,也可以在php.ini文件中通过使用auto_prepend_file指令预先自动装入。如果使用后一种方法的话,虽然取得了一劳永逸的好处,但是也有一些缺点值得我们注意。  下面的一段代码向我们展示了解析一个庞大的包含文件需要一定的时间:  require(timing.inc);  ss_timing_start();  include(test.inc);  ss_timing_stop();  echo  .ss_timing_current().  ;  在上面的代码中,test.inc是一个1000行的包含文件,运行的结果显示,解析这个包含文件花费了0.6秒钟,对于一个大型网站来说,这个速度并不是可以忽略不记的。使用包含文件的另外一个缺点是:如果一个文件中的一个语句发生错误,将会使整个网站的PHP程序都无法运行。所以使用起来也及其小心。其实,对包含文件稍做处理,即可以使包含文件只在需要时进行解析。  下面的代码使abc.inc文件只在程序需要时才作解析:  if ( defined( __LIBA_INC) )  define( __LIBA_INC, 1 );  /* * 代码... */  3.使用面向对象的编程方法  PHP也是一种面向对象的语言,面向对象的编程方法是优秀的程序员们非常推崇的一种软件设计方法,在PHP编程中可以充分发挥面向对象语言的优势,对编程中的对象进行封装。在前面的代码中,我们使用了面向对象的方法,例如在管理数据库时,我们将query()函数封装进数据库类中,这极大地方便了代码的管理,增加了程序的可读性。  追求程序速度,而不是编程的速度  在网站建设中,程序运行速度和网页下载速度都是关系成败的重要因素。作为一名Web程序员,应该更加注意代码的运行速度。下面介绍的几种方法都在不同程度上提高了代码的运行速度。  1.使用内嵌的HTML代码,而不是PHP的echo语句。  因为PHP是一门嵌入式Web编程语言,可以将HTML代码和PHP代码相互嵌入。但是很多程序员担心在HTML代码中过多的使用&&嵌入PHP代码会多次调用PHP解释器,从而降低了PHP代码的运行速度,所以宁愿使用PHP的echo语句来输出HTML代码,而不直接使用HTML代码。  但事实却恰恰相反。每一个PHP页面只调用一次PHP解释器来解释所有的PHP代码,所以,只在需要时才嵌入PHP代码,而大多数的时候直接使用HTML代码输入结果,不但不会降低程序的运行速度,而且因为减少了对echo语句的解析,往往可以提高代码的运行速度。下面的一段代码证明了我们的结论。在这段代码中,我们使用了前面介绍的时间测试函数。  2.使用str-replace而不是ereg-replace  习惯使用Perl进行编程的程序员更加愿意使用ereg_replace完成字符串替换工作,因为在PHP中ereg_replace的用法和Perl中模式匹配的用法相近。但是,下面的这段代码证明,使用str_replace
代替 ereg_replace将可以大大提高代码的运行速度。  测试str_replace和ereg_replace的运行速度:  //这段代码测试str_replace的运行速度 ?&  for ($i=0; $i&1000; $i++) {  str_replace(i&, b&, $string).  ;  }  //这段代码测试ereg_replace的运行速度  for ($i=0; $i&1000; $i++) {  ereg_replace(&([/]*)i&, &1b&, $string).  ;  }  3.注意字符串的引用  PHP和其它很多编程语言一样,可以使用双引号(&&)来引用字符串,也可以使用单引号()。但是在PHP中,如果使用双引号来引用字符串,那么PHP解析器将首先分析字符串中有没有对变量的引用,有变量的话,将对变量进行替换。如果是单引号,则没有如此复杂&&直接将单引号包含起来的所有字符串直接显示出来。显然,在PHP编程中,如果使用单引号引用字符串变量要比使用双引号快速一些。  4.在数据库中避免使用联合操作  比起其它的Web编程语言来说,PHP的数据库功能十分强大。但是在PHP中数据库的运行仍然是一件十分费时费力的事情,所以,作为一个Web程序员,要尽量减少数据库的查询操作,同时应该为数据库建立适当的索引。  另一件值得注意的事情是在用PHP操作数据库时,尽可能不使用多个数据表的联合操作,尽管联合操作可以增强数据库的查询功能,但是却大大增加了服务器的负担。为了说明这个问题,我们可以看看下面的这个简单的例子。  我们在数据库中创建了两个数据表foo和big_foo。在数据表foo中,只有一个字段,包含了从1-1000之间的所有自然数。数据表big_foo同样只有一个字段,但包含了从1-1,000,000之间的全部自然数。所以,从大小上说,big_foo等于foo与它自身进行了联合操作。  $db-&query(&select * from foo&);  0.032273 secs  $db-&next_record();  0.99999 secs  $db-&query(&insert into foo values (NULL)&);  0.019506 secs  $db-&query(&select * from foo as a, foo as b&);  17.280596 secs  $db-&query(&select * from foo as a, foo as b where a.id &
b.id&);  14.645251 secs  $db-&query(&select * from foo as a, foo as b where a.id = b.id&);  0.041269 secs  $db-&query(&select * from big_foo&);  25.393672 secs  从上面操作结果我们可以发现,对于两个有1000条记录的数据表进行联合,其速度并不比对一个1000000条纪录的大型数据表单独进行操作快多少。  5.注意include与require的区别  在PHP变成中,include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:  if($something){  include(&somefile&);  }  但不管$something取何值,下面的代码将把文件somefile包含进文件里:  if($something){  require(&somefile&);  }  下面的这个有趣的例子充分说明了这两个函数之间的不同。  $i = 1;  while ($i & 3) {  require(&somefile.$i&);  $i++;  }  在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include();  $i = 1;  while ($i & 3) {  include(&somefile.$i&);  $i++;  }  6.注意echo和print的区别  PHP中echo和print的功能也基本相同,但是两者之间也有细微差别。在PHP代码中可以把print作为一个普通函数来使用,例如执行下面的代码后变量$res的值将为1。  $ret = print &Hello World&;  这意味着print可用在一些复杂的表达式中,而echo则不行。同样,在代码中echo语句的运行速度要略微快于print语句,因为echo语句不要求返回任何数值。&  以上,就是对成为优秀PHP开发者三条准则的分析,绿茶小编想告诉刚开始学习PHP的朋友们:万事开头难,只要有付出就会有回报的哦。
声明:本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除,谢谢合作!
Copyright (C)
Inc. All Rights Reserved.你的位置: >
> git关于文件权限修改引起的冲突及忽略文件权限的办法
在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突。明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异的一部分。下面笔者自己做了个简单的例子来演示这种情况。
1、修改版本库的文件的权限,然后使用diff查看下改变。
$ chmod 777 pack.php
$ git diff pack.php
git文件权限修改示例
可以看到git把文件权限也列入了版本管理。
2、在另外一个地方clone这个版本库,修改pack.php文件,然后提交。
3、在原版本库下面更新内容。
$ git pull
git文件权限修改引起的冲突
可以看到提示冲突。
解决办法:
git中可以加入忽略文件权限的配置,具体如下:
$ git config core.filemode false
这样就设置了忽略文件权限。查看下配置:
$ cat .git/config
git忽略文件权限的配置
这时候再更新代码就OK了。
笔者个人理解版本管理更注重文件内容,比较好奇为什么git将文件权限列入版本管理,估计是某些场景下有需要。笔者试了下文件所有者和所有组的修改不列入版本管理。另外在windows下git对文件权限是怎么处理的?
转载请注明: &
与本文相关的文章

我要回帖

更多关于 宏程序编程 的文章

 

随机推荐