From owner-freebsd-git@freebsd.org Thu Sep 24 20:17:24 2020 Return-Path: Delivered-To: freebsd-git@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 64842427301 for ; Thu, 24 Sep 2020 20:17:24 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mailman.nyi.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 4By5tr1JKKz47YL for ; Thu, 24 Sep 2020 20:17:24 +0000 (UTC) (envelope-from david@catwhisker.org) Received: by mailman.nyi.freebsd.org (Postfix) id 2AE81426BD4; Thu, 24 Sep 2020 20:17:24 +0000 (UTC) Delivered-To: git@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2AA8C426F69 for ; Thu, 24 Sep 2020 20:17:24 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mx.catwhisker.org (mx.catwhisker.org [107.204.234.170]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4By5tp40JYz47FN for ; Thu, 24 Sep 2020 20:17:22 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from albert.catwhisker.org (localhost [127.0.0.1]) by albert.catwhisker.org (8.16.1/8.15.2) with ESMTP id 08OKHFh5053660 for ; Thu, 24 Sep 2020 20:17:15 GMT (envelope-from david@albert.catwhisker.org) Received: (from david@localhost) by albert.catwhisker.org (8.16.1/8.16.1/Submit) id 08OKHFVq053659 for git@freebsd.org; Thu, 24 Sep 2020 13:17:15 -0700 (PDT) (envelope-from david) Date: Thu, 24 Sep 2020 13:17:15 -0700 From: David Wolfskill To: git@freebsd.org Subject: Question on (my) workflow migration svn -> git Message-ID: <20200924201715.GR1390@albert.catwhisker.org> Reply-To: git@freebsd.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="PLQVj6KKQ8ndgLWn" Content-Disposition: inline X-Rspamd-Queue-Id: 4By5tp40JYz47FN X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of david@catwhisker.org designates 107.204.234.170 as permitted sender) smtp.mailfrom=david@catwhisker.org X-Spamd-Result: default: False [0.41 / 15.00]; HAS_REPLYTO(0.00)[git@freebsd.org]; ARC_NA(0.00)[]; FREEFALL_USER(0.00)[david]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:107.204.234.170]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; PREVIOUSLY_DELIVERED(0.00)[git@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.01)[-1.014]; RCVD_TLS_LAST(0.00)[]; NEURAL_HAM_SHORT(-0.14)[-0.136]; DMARC_NA(0.00)[catwhisker.org]; NEURAL_HAM_MEDIUM(-1.04)[-1.043]; SIGNED_PGP(-2.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_COUNT_TWO(0.00)[2]; ASN(0.00)[asn:7018, ipnet:107.192.0.0/12, country:US]; MAILMAN_DEST(0.00)[git]; REPLYTO_EQ_TO_ADDR(5.00)[] X-BeenThere: freebsd-git@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Discussion of git use in the FreeBSD project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Sep 2020 20:17:24 -0000 --PLQVj6KKQ8ndgLWn Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable The migration (of my workflow) from cvs to svn was more "cosmetic" than anything else -- the data store changed and the commands changed, but the underlying thought processes behind what I was doing stayed pretty much the same. I have no idea if that will be the case for svn -> git, so I'm putting this out for comments and, perhaps, some useful advice from folks who are more familiar with git than I am. Please note: I am not a FreeBSD committer. I have no desire (let alone requirement) to cause changes to the FreeBSD code base to show up with my fingerprints on them. Details on the below-described workflow may be found at http://www.catwhisker.org/~david/FreeBSD/upgrade.html; the current state of things may be seen at http://www.catwhisker.org/~david/FreeBSD/history/ (in case either of those is of interest). TL; DR: I sync private local mirrors, update working copies, then make the running systems match the working copies. Details: I have a couple of machines that I consider "development" machines; one is the laptop that I use for day-to-day activities; the other is a dedicated "build machine" (named "freebeast"). On ecah of these machines, I perform a daily update of: * FreeBSD stable/${head - 1} [currently: 12] * Locally-installed ports (using the ports "head" branch) * FreeBSD head Perhaps more significantly, I keep the two machines in lock-step, as my activities on my laptop constitute the bulk of my testing of what will be installed on my small handful of "production" machines each Sunday (as they get the most recent snapshot of stable/${head - 1} that freebeast built Sunday morning). To keep them in lock-step, the build machine performs a cron-initiated "svnsync" to update a local private mirror of the svn repositories (src, ports, and doc). For the laptop, it depends: * If I'm away from home, it also does the same sort of svnsync (at the same time). * If I'm home, it waits a couple of minutes, then does an rsync from the build machine's private local mirror. In any case, each of them has a private local mirror that is only updated by the "mirroring" operation -- I don't commit to it. For each of stable/${head - 1}, head, and ports, the appopriate svn working copy is updated, using the svn repo as a read-only reference. Thus (for example), when FreeBSD stable/12 was branched, it was straightforward for me to "clone" the slice used for head (to a slice that I was not actively using until then), then use "svn switch" to change the src working copy to point to stable/12 (vs. head) -- there would be little substantitiative change, so the behavior should be quite similar to what I had already experienced with head. And once I was comfortable with stable/12, I could "clone" that to overlay the old stable/11 slice. (I've been doing this -- well, substitute a few references to cvs inplace of the svn ones for early days -- since around FreeBSD 3.x (I'm pretty sure I skipped 5.x, though). And it's been working pretty well for me so far. I've evn been able to point out an occasional breakage now and then.) So: Is doing something ... similar ... to the above feasible using git (vs. svn)? And if so, may I have a pointer or two to get me started? Because it's not at all obvious to me how to accomplish it. (E.g., in my use of git so far, the notions of "repository" and "working copy" seem to be conflated, which does not lead to warm and fuzzy feelings on my part.) Thanks! Peace, david --=20 David H. Wolfskill david@catwhisker.org "Therefore, this vacancy should not be filled until we have a new president." -- Mitch McConnell, February 2016 See http://www.catwhisker.org/~david/publickey.gpg for my public key. --PLQVj6KKQ8ndgLWn Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGTBAEBCgB9FiEE4owz2QxMJyaxAefyQLJg+bY2PckFAl9s/stfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEUy OEMzM0Q5MEM0QzI3MjZCMTAxRTdGMjQwQjI2MEY5QjYzNjNEQzkACgkQQLJg+bY2 PcljiAgAjOjB9ZSUPdyOxg7PojeLeMKbxL64Xpqd9hDUkehLBlhM+GnzsDh10roz SVFQvds+qsCOwiFECNmJZipmnpVE8cES8cWsjrCpAZKIDmmoEOsnQgD9jri+gXOF sp1+7jk+lSL7vycg8DVcKrvMjUTEBwY4viqD2mjeSvkbDiT5gXKcqffsdNDgeGWe QZ/xC1nnER8YbsByYFRvbWV71c1wf1ek8HW4GrG3ASH6Jg0JUkyiPzM12qLnFXAA +L3jPT4j8fQV6nQXv9MyfxybR05DxuviBXKcL1+rV3/VnXO1AIlBZNX5YEsqDNKK npl3m77UlpC2+QSRhOx/P/1+SEtqbQ== =GuIT -----END PGP SIGNATURE----- --PLQVj6KKQ8ndgLWn--