From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#11757: Acknowledgement (24.1.50; vc-git calls `process-file' too many times) Date: Sat, 30 Jun 2012 16:56:03 +0400 Message-ID: <4FEEF763.2060806@yandex.ru> References: <4FE2832A.1030308@yandex.ru> <4FE994E8.9020605@yandex.ru> <87zk7qs21q.fsf@gmx.de> <4FEBAAAA.3030102@yandex.ru> <87d34igrie.fsf@gmx.de> <4FEDD2A0.3010300@yandex.ru> <878vf66pgw.fsf@gmx.de> <4FEDDFD8.1010407@yandex.ru> <87wr2pgoiy.fsf@gmx.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1341061008 27948 80.91.229.3 (30 Jun 2012 12:56:48 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 30 Jun 2012 12:56:48 +0000 (UTC) Cc: 11757@debbugs.gnu.org To: Michael Albinus Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 30 14:56:47 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SkxEE-0006KU-Vf for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Jun 2012 14:56:47 +0200 Original-Received: from localhost ([::1]:39287 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SkxEE-0005DG-QQ for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Jun 2012 08:56:46 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:39532) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SkxEA-0005CZ-Lp for bug-gnu-emacs@gnu.org; Sat, 30 Jun 2012 08:56:44 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SkxE8-0003Xq-R4 for bug-gnu-emacs@gnu.org; Sat, 30 Jun 2012 08:56:42 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:57524) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SkxE8-0003Xd-Fl for bug-gnu-emacs@gnu.org; Sat, 30 Jun 2012 08:56:40 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SkxIM-0001vi-Nb for bug-gnu-emacs@gnu.org; Sat, 30 Jun 2012 09:01:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Jun 2012 13:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11757 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11757-submit@debbugs.gnu.org id=B11757.13410612337382 (code B ref 11757); Sat, 30 Jun 2012 13:01:02 +0000 Original-Received: (at 11757) by debbugs.gnu.org; 30 Jun 2012 13:00:33 +0000 Original-Received: from localhost ([127.0.0.1]:38837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SkxHs-0001v0-8U for submit@debbugs.gnu.org; Sat, 30 Jun 2012 09:00:33 -0400 Original-Received: from forward2.mail.yandex.net ([77.88.46.7]:58696) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SkxHn-0001up-Ix for 11757@debbugs.gnu.org; Sat, 30 Jun 2012 09:00:30 -0400 Original-Received: from smtp3.mail.yandex.net (smtp3.mail.yandex.net [77.88.46.103]) by forward2.mail.yandex.net (Yandex) with ESMTP id AC4AB12A1B9C; Sat, 30 Jun 2012 16:56:02 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341060962; bh=ceWqcT/PUP/BpjwxoIahlgpWgNldPDse6FtHe1nSEds=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type:Content-Transfer-Encoding; b=plHc3mfnRUXRUT2qZZdCWwgXiXz1vUG0MFZsLG8fQGr5NpzLjYKuToOFydVxdSZgZ nA/coQmq8lw2ERFet86jlLQHDsbCzo3lcOZrRgDp/p3IQHF13+kuyemwphSOXUyIgV ulrUunMbnJysc7A9uyBNNYHstadIN7VjhVgSDh64= Original-Received: from smtp3.mail.yandex.net (localhost [127.0.0.1]) by smtp3.mail.yandex.net (Yandex) with ESMTP id 8BAAE1BA0316; Sat, 30 Jun 2012 16:56:02 +0400 (MSK) Original-Received: from 98-87.nwlink.spb.ru (98-87.nwlink.spb.ru [178.252.98.87]) by smtp3.mail.yandex.net (nwsmtp/Yandex) with ESMTP id u2bGqaSC-u2bqFYSW; Sat, 30 Jun 2012 16:56:02 +0400 X-Yandex-Rcpt-Suid: michael.albinus@gmx.de X-Yandex-Rcpt-Suid: 11757@debbugs.gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341060962; bh=ceWqcT/PUP/BpjwxoIahlgpWgNldPDse6FtHe1nSEds=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=Ei7Mt7o0J85HkV2ZcIadUdjjnnqRM0q8cvazFF7YCfptCXrfg9hiv3fgDUColAGJP 1xsxaQ4jwr5LWwOdrxY5wnTGW3W9I5fBrVIjERz1+4E1lLqk+nYlNNYWjUzlHTrhnJ nsJ7XTvEloZkGd3Dx8XeUjv0jutDqaKGqf83+3Do= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <87wr2pgoiy.fsf@gmx.de> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:61439 Archived-At: On 30.06.2012 13:03, Michael Albinus wrote: > Dmitry Gutov writes: > >> On 29.06.2012 20:40, Michael Albinus wrote: >>>>> A stale cache is bad, of course. We must carefully check, where a cached >>>>> value has to be invalidated. But why should vc-working-revision being >>>>> invalidated after saving? It is still the same, I believe. Switching to >>>>> another branch shall be observed by Emacs, 'cause there is another >>>>> version of the file on the disk, and Emacs warns you before editing. >>>> >>>> This won't happen in following cases: >>>> 1) We switch to revision when the opened file is the same. >>>> 2) It doesn't exist there. >>>> 3) We just delete it from disk from outside of Emacs. >>>> So the file isn't changed, and you see no warning or update, even >>>> after you write it to disk from Emacs again. >>> >>> I see. Maybe we find a hook, where we could invalidate the vc cache when >>> a file is written which does not exist on the disk? >> >> (vc-before-save) might be the place to do that. > > In vc-after-save, vc-git-state is called. Wouldn't it be sufficient to > invalidate the cache there, when it detects that the file is not up-to-date? Why there? Problem with working-revision is common for all backends, as far as I can see. Also, how? After the file is written, we can't check if it didn't exist on disk anymore. Here's what I had in mind: diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index bba7217..4bff5fc 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -703,7 +703,9 @@ Before doing that, check if there are any old backups and get rid of them." ;; another name. This enables local diffs and local reverting. (let ((file buffer-file-name) backend) - (ignore-errors ;Be careful not to prevent saving the file. + (ignore-errors ;Be careful not to prevent saving the file. + (unless (file-exists-p file) + (vc-file-clearprops file)) (and (setq backend (vc-backend file)) (vc-up-to-date-p file) (eq (vc-checkout-model backend (list file)) 'implicit)