From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thomas Fitzsimmons Newsgroups: gmane.emacs.devel Subject: Re: [elpa] master 872014e: Prevent accidental deletion of .git Date: Wed, 18 Nov 2015 09:39:06 -0500 Message-ID: References: <20151109013124.17711.29422@vcs.savannah.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1447857586 24436 80.91.229.3 (18 Nov 2015 14:39:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 18 Nov 2015 14:39:46 +0000 (UTC) Cc: "=?utf-8?Q?Fabi=C3=A1n?= E. Gallina" , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 18 15:39:40 2015 Return-path: Envelope-to: ged-emacs-devel@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 1Zz3tT-000225-T8 for ged-emacs-devel@m.gmane.org; Wed, 18 Nov 2015 15:39:32 +0100 Original-Received: from localhost ([::1]:36330 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zz3tT-0005Rb-D0 for ged-emacs-devel@m.gmane.org; Wed, 18 Nov 2015 09:39:31 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39602) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zz3tD-0005RL-9l for emacs-devel@gnu.org; Wed, 18 Nov 2015 09:39:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zz3t6-0000Pu-T0 for emacs-devel@gnu.org; Wed, 18 Nov 2015 09:39:15 -0500 Original-Received: from mail-ig0-x22b.google.com ([2607:f8b0:4001:c05::22b]:37647) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zz3t6-0000Ou-LP for emacs-devel@gnu.org; Wed, 18 Nov 2015 09:39:08 -0500 Original-Received: by igcto18 with SMTP id to18so39372372igc.0 for ; Wed, 18 Nov 2015 06:39:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fitzsim-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=k2yXPyXrEFXkBdD88JIacFi2nYupyB/e+hpzhLVLYFY=; b=peWIVdeRX3fuXBc04t5jpWmtreuAet9bZvGLPTwbDO7dG4zLVQu1uWdpJNOGjOT1Do R6dYD0teTUJDttnpNsBoDyMJuaGihJ378nJzZQxLjRcxgk4MUUTNw//h64VxWugJjGIM m1ommt5j8n1TRMXlY5aQTVJhRCGcmv+p8iaD47TsEEsNC5oD9Dd2jIMWW3TaXWQcRVdU 3LCus+ViIjLTOwMk7SoL2ugvjcaC9C9RUSfzLKwi27k/7PkoBQLhhDhz5iwIAJMpqTP7 dHXfq5/N1TzFDlXXrb6AdB4mEqqYmugRx9qY8VYQ2Xk/prLJmzN3wYJ1HverNGnkvvKu 6B2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=k2yXPyXrEFXkBdD88JIacFi2nYupyB/e+hpzhLVLYFY=; b=JvzAbyIQmzdrET7XnGXYXy3r7A13Onfrt9Z6nurRqVRtjVEtTt27sBTqKgSFKlRbCx cXnbWvycg5c21e/G/zTVhRHxQhvzZK3+27csBgeldIJmZF7OCvaVV1Hi0NM3G1Lo+qzV SHw2bR3ePa/34BdjbBEdER+mMyMO6PE3oWnYX81xdUE8ouCUvPhdxfFP7snfTGow68Tg RckcpGNf3BLbpaENn9EWF34Pz7E7NgmMV0+G+gaymHSwA8gAjl0gWjuAtUfg2mZWg2ua Cv+KC+kVVZ7tohUqW6HiDyynynMB1wt5td8bJZsBlsIU8+MC6/0lc/3zUnP2KT5wjDeE J2OA== X-Gm-Message-State: ALoCoQmRhxR6dRgusQrkyMyw3asOp0ZxhzexuB6k1MSYGC+qjW3LDzMBYga29PCTB/pyl/kdxC8p X-Received: by 10.50.97.37 with SMTP id dx5mr8202746igb.14.1447857547943; Wed, 18 Nov 2015 06:39:07 -0800 (PST) Original-Received: from hp-dv5t (69-165-165-189.dsl.teksavvy.com. [69.165.165.189]) by smtp.gmail.com with ESMTPSA id b2sm1324875igx.1.2015.11.18.06.39.06 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Nov 2015 06:39:07 -0800 (PST) In-Reply-To: (Stefan Monnier's message of "Mon, 09 Nov 2015 00:03:34 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4001:c05::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:194711 Archived-At: --=-=-= Content-Type: text/plain Stefan Monnier writes: [...] > No, we should change to code to use symlinks instead of > file-copies first (and at the same time change it as I suggested, > i.e. to only delete symlinks and empty directories). How about the attached? I've only tested it on a single-file package (ntlm.el). I could extend it to directories if the approach is what you want. Thomas --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Use-symbolic-links-for-core-packages.patch >From 73978a3d5c49c59e02b42000de6c8d9337e6c83b Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Sun, 15 Nov 2015 21:25:04 -0500 Subject: [PATCH] Use symbolic links for core packages * admin/archive-contents.el (archive--process-simple-package): Copy file if it is a symlink to prevent deletion of target source file. (archive--core-package-copy-file): Create symbolic links for core files. (archive--core-package-sync): Change message to indicate linking. --- admin/archive-contents.el | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/admin/archive-contents.el b/admin/archive-contents.el index 74e473e..4f3aee9 100755 --- a/admin/archive-contents.el +++ b/admin/archive-contents.el @@ -207,8 +207,11 @@ (defun archive--process-simple-package (dir pkg vers desc req extras) "Deploy the contents of DIR into the archive as a simple package. Rename DIR/PKG.el to PKG-VERS.el, delete DIR, and return the descriptor." ;; Write DIR/foo.el to foo-VERS.el and delete DIR - (rename-file (expand-file-name (concat pkg ".el") dir) - (concat pkg "-" vers ".el")) + (if (file-symlink-p (expand-file-name (concat pkg ".el") dir)) + (copy-file (expand-file-name (concat pkg ".el") dir) + (concat pkg "-" vers ".el")) + (rename-file (expand-file-name (concat pkg ".el") dir) + (concat pkg "-" vers ".el"))) ;; Add the content of the ChangeLog. (let ((cl (expand-file-name "ChangeLog" dir))) (with-current-buffer (find-file-noselect (concat pkg "-" vers ".el")) @@ -647,7 +650,7 @@ (defun archive--core-package-empty-dest-p (dest) (defun archive--core-package-copy-file (source dest emacs-repo-root package-root exclude-regexp) - "Copy file from SOURCE to DEST ensuring subdirectories." + "Link file from SOURCE to DEST ensuring subdirectories." (unless (string-match-p exclude-regexp source) (let* ((absolute-package-file-name (expand-file-name dest package-root)) @@ -656,7 +659,10 @@ (defun archive--core-package-copy-file (directory (file-name-directory absolute-package-file-name))) (unless (file-directory-p directory) (make-directory directory t)) - (copy-file absolute-core-file-name absolute-package-file-name)) + (if (memq system-type '(windows-nt ms-dos)) + (copy-file absolute-core-file-name absolute-package-file-name) + (make-symbolic-link absolute-core-file-name + absolute-package-file-name t))) (message " %s -> %s" source (if (archive--core-package-empty-dest-p dest) (file-name-nondirectory source) dest)))) @@ -711,7 +717,7 @@ (defun archive--core-package-sync (definition) ;; Files may be just a string, normalize. (list file-patterns) file-patterns)))) - (message "Copying files for package: %s" name) + (message "Linking files for package: %s" name) (when (file-directory-p package-root) (delete-directory package-root t)) (make-directory package-root t) -- 2.4.3 --=-=-=--