From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id kE3fGvOPtmUYPgAAqHPOHw:P1 (envelope-from ) for ; Sun, 28 Jan 2024 18:33:39 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id kE3fGvOPtmUYPgAAqHPOHw (envelope-from ) for ; Sun, 28 Jan 2024 18:33:39 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1706463219; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=MzFVY4OnDTehAs9JNLX/tSLbz46kavjaU6OIPCw6L4A=; b=t2xXpklYBuFqoVWArFdeR0sY2mj0tTWMQB7j5A0XaVojeYLZ4Y+Mdca/P1PqJs74YBOHyy BifcgCtUT/HfxkvSEZIXEyB7glzTgqo2Dq1ASlZ9QvdTOggtW+8H7MYHojeTFf7wF/xCIR R8NxtgCmv3nyhxw8WZaq4yqZLx2WvG1zWvC2NjC/gIXkNNVZsqJ5Cyl3A7rNksMs45pMD2 mZiMcm0li+W0ipVQSNePdxOIndIjmV9SptFMXQhzj6hCjrZdeBKKI2qd8drnxa+J99TfDF 3t3zMOZjWb0sB4yl+1Fct6EILXr4s6Peytj+QMdqUXpeaZop9VpDl3EJ2Nh6ZA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1706463219; a=rsa-sha256; cv=none; b=FLVKYBA8AAA1uZSJz5nyN92i4y5hwnuk+GH9OcXAME0J9T5mnEQ4BjGgSrTRRFYSXwviB2 rNUG97Bn9MOkbO2Dy9Z8Dp4IjPE0oXMOZ1tm3cJKwEfEvaC5Pnjzk5tvkmXtHdlOJvXur4 sAMnwlXCr6jctFI3YJKpWrMLMnxt5nKnFK4sKnMUHk5yYHBBI1qXy+w7l95WPMNswQ9dvZ WZShxMOmqB5LntUqFhVenxxvYmd5e1djwJLSaQZqJi9/1oDqLVIEN51fFMx3h/pXAMfRbI NhLYk7bMznE3IfU71Eeh8e9Gq/lY2LkuwrZwJagndmBNesWYK2gHJN5Ue/CelA== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 8B9EF59E68 for ; Sun, 28 Jan 2024 18:33:38 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rU91R-0002Pu-LU; Sun, 28 Jan 2024 12:32:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rU91L-0002PU-Ao; Sun, 28 Jan 2024 12:32:43 -0500 Received: from ns13.heimat.it ([46.4.214.66]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rU91J-0006N7-17; Sun, 28 Jan 2024 12:32:38 -0500 Received: from localhost (ip6-localhost [127.0.0.1]) by ns13.heimat.it (Postfix) with ESMTP id BA69430022F; Sun, 28 Jan 2024 17:32:33 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at ns13.heimat.it Received: from ns13.heimat.it ([127.0.0.1]) by localhost (ns13.heimat.it [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U8s99RRRz7GV; Sun, 28 Jan 2024 17:32:31 +0000 (UTC) Received: from bourrache.mug.xelera.it (unknown [93.56.171.217]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by ns13.heimat.it (Postfix) with ESMTPSA id 4AF1830022E; Sun, 28 Jan 2024 17:32:31 +0000 (UTC) Received: from roquette.mug.biscuolo.net (roquette [10.38.2.14]) by bourrache.mug.xelera.it (Postfix) with SMTP id 86ED52DF364A; Sun, 28 Jan 2024 18:32:30 +0100 (CET) Received: (nullmailer pid 1137 invoked by uid 1000); Sun, 28 Jan 2024 17:32:29 -0000 From: Giovanni Biscuolo To: Nicolas Graves , guix-sysadmin Cc: guix-devel@gnu.org Subject: Re: Git-LFS or Git Annex? In-Reply-To: <8734uhycgs.fsf@ngraves.fr> Organization: Xelera.eu References: <87mssuu57m.fsf@inria.fr> <87il3i8wci.fsf@xelera.eu> <8734uhycgs.fsf@ngraves.fr> Date: Sun, 28 Jan 2024 18:32:29 +0100 Message-ID: <87v87d749e.fsf@xelera.eu> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Received-SPF: pass client-ip=46.4.214.66; envelope-from=g@xelera.eu; helo=ns13.heimat.it X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -7.25 X-Migadu-Queue-Id: 8B9EF59E68 X-Spam-Score: -7.25 X-Migadu-Scanner: mx11.migadu.com X-TUID: g4nPZDshA5Kn --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi Nicolas, Nicolas Graves writes: [...] > This is not always true. Git-LFS also has the concept of Custom Transfer > Agents, which in some cases do not need a running server. One example is > lfs-folderstore, which can simply use a remote directory as a LFS > remote. thanks, i didn't know about custom transfer agents, the use withous an API server is documented here: =2D-8<---------------cut here---------------start------------->8--- In some cases the transfer agent can figure out by itself how and where the transfers should be made, without having to query the API server. In this case it's possible to use the custom transfer agent directly, without querying the server, by using the following config option: =20 lfs.standalonetransferagent, lfs..standalonetransferagent Specifies a custom transfer agent to be used if the API server URL matches as in "git config --get-urlmatch lfs.standalonetransferagent ". git-lfs will not contact the API server. It instead sets stage 2 transfer actions to null. "lfs..standalonetransferagent" can be used to configure a custom transfer agent for individual remotes. "lfs.standalonetransferagent" unconditionally configures a custom transfer agent for all remotes. The custom transfer agent must be specified in a "lfs.customtransfer." settings group. =2D-8<---------------cut here---------------end--------------->8--- (https://github.com/git-lfs/git-lfs/blob/main/docs/custom-transfers.md#usin= g-a-custom-transfer-type-without-the-api-server) some examples: 1. git-lfs-agent-scp: A custom transfer agent for git-lfs that uses scp to transfer files. This transfer agent makes it possible to use git-lfs in situations where the remote only speaks ssh. This is useful if you do not want to install a git-lfs server. (MIT license, written in C, URL: https://github.com/tdons/git-lfs-agent-scp) 2. git-lfs-rsync-agent: The rsync git-lfs custom transfer agent allows transferring the data through rsync, for example using SSH authentication. (MIT license, written in Go, URL: https://github.com/excavador/git-lfs-rsync-agent) 3. git-lfs-agent-scp-bash: A custom transfer agent for git-lfs that uses scp to transfer files. This is a self-contained bash script designed for seamless installation, requiring no prerequisites with the exception of the external command scp. It enables to use git-lfs even if you can not use http/https but ssh only. (MIT License, written in bash, URL: https://github.com/yoshimoto/git-lfs-agent-scp-bash) So yes: we could use git-lfs without a git-lfs server and set an rsync or scp transfer agent for each remote (documenting it for users, since this must be done client-side) It's not at all as powerful as the location tracking features of git-annex but... doable :-) [...] >> Another important limitation of Git-LFS is that you cannot delete >> (remotely stored) objects [1], with git-annex is very easy. > > Probably true, haven't encountered the use-case yet. IMHO this is a very important feature when you have to manage media archives. [...] > Just a note on upsides of Git-LFS : > - integration with git is better. A special magit extension to use > git-lfs is not needed, whereas it is with git-annex. true :-D > - less operations: once I know which files will be my media files, I > have less headaches (basically the exact git experience, you don't have > to think about where I should `git add` or `git annex add` a file). it's the same with git-annex, you just have to configure/distribute a .gitattributes file, i.e.: =2D-8<---------------cut here---------------start------------->8--- * annex.largefiles=3D(largerthan=3D5Mb) * annex.largefiles=3D(not(mimetype=3Dtext/*)) =2D-8<---------------cut here---------------end--------------->8--- see https://git-annex.branchable.com/tips/largefiles/ for a description of this feature > It's indeed less copyleft though. Simpler, but also maybe less adapted > to this use-case. With git-annex everyone can set up a "git-annex enabled" server (although haskel dependency is a limitation since it's unsupported in many architectures)... or use one of the available special remotes. Thanks! Gio' =2D-=20 Giovanni Biscuolo Xelera IT Infrastructures --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJABAEBCgAqFiEERcxjuFJYydVfNLI5030Op87MORIFAmW2j60MHGdAeGVsZXJh LmV1AAoJENN9DqfOzDkShhwQALj9+0gq5LEdHab0u7G7DP/hZ2zbF6+2BiX0rv2E IpCm7f3itVcQmOYE/1UwEUVwzKuxANE4FHScHeGIg/dMjIa2pHsRjJF1iyc2tdFZ mGuNOeit1SPFOsACN2mh0aMZ0V4B/boVLix6eeF0ov/hhEnERJu3dVsMRSQJx2mq S8jHUA4ntZxJSaKgIKe6wuTvnZ/QzcEQp1F8rc8ZkPGERYD3DIArDZl+zgS3hw2x b8DSyqSMdAYu+2woZtqh0l5qwg993EMFliu6YYnRc3gnV3FsnLbYhx9FQitFBu1z O48nF/eOP1X4dKYVcuhK4gJkmPguzqj7yEVTMMaZF8oFR8ncgYskib5Ii4W1XH8v xOqVO2jqIaFa4DqmcLiUkA6BcpvQSIP/WV3bqo9i5nyevc62QqFsmMaIK7su8Qhu qVNtuyYDiGhJEc47MeKNOrGbMgjsJGXcpnFmc4eDq+DBTAqk5MzBLisfuXVcgA9i STramtgkQKdMapfJQoNXX1x++YRtgMhmAsZTmh3XU9oskEif4i5bKLI7VKuD/syH lkEy/h/UZ4uNI1/OKnkqlGHlxuA4d9qIr4DyzJiO7lg87UdSFM4/g7mHNCodRFUP +5AKpT4gSzZWqFXeBzg+8wWVz4IIC+XCHhJsigT1RdZCmXJv2h1hHrDz+/ZgWLSu ClIX =MsCC -----END PGP SIGNATURE----- --=-=-=--