git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: gitweb wishlist

From
TGThomas Glanzmann <sithglan@stud.uni-erlangen.de>
Date
May 24, 2005, 21:41 UTC
Message-ID
<20050524214106.GE25606@cip.informatik.uni-erlangen.de>
In-Reply-To
<42939942.9080807@zytor.com>
Hello,
> I was considering using CVS for that at one point, but the way CVS 
> distributes its metadata and recurses makes that insane.  For git, it 
> would be trivial.
I have a shared environment, and handle it this way:
	- I edit all files on my machine on university or at least put
	  it there per scp when I am done modifing them local.
	- I have file called .env in my home which contains a list with
	  all files I want to 'distribute'.
	- There is a script called envup, which updates all files which
	  are not up2date. It uses perl because perl is everywhere I
	  have an account on. After that I call a perl preprocessor to
	  generate ssh config files (there are floating so much ssh
	  versions out there) and one to adopt my .screenrc (for the
	  machine local screen) to my needs.

my .bash_profile does a lot of testing to add paths and sets aliases based on the environment of the machine and not based on host/domain names. Files with lot of deltas like my .fvwm2rc or .bash_profile are all version controled using rcs on a per file basis of course. This works very well for me on Linux, Solaris, OpenBSD, FreeBSD, NetBSD, OSF, AIX, MacOSX, name it ...

Oh and to bootstrap my environment on a 'new' machine:
tar cfz env.tgz `cat .env`, move it over, unpack and re login.

A while ago I also distributed binaries (bash, rar, fvwm) via envup for my environment, but I adopted now to something that works everywhere, and if it doesn't I do that manual. So envup only transfers stuff which is new. (I have some accounts on low bandwidth sites). One known side effect. If envup doesn't find md5sum binary it just transfers all files.

Oh and a friend and colleague has a similliar script only that he pushes his environment out.

	Thomas
#!/usr/bin/perl -w

use strict; use integer;

my $command  = '';

my %local = (); my %remote = ();

my @sums = (); my @transfer = ();

if ( -f '/home/cip/adm/sithglan/bin/envup.server'
  || -f "$ENV{HOME}/bin/envup.server" ) {
	die "NEVER EVER RUN THIS IN THE CIP POOL: YOU SUCK :-)";
	exit; # way to secureredundant
}

# [remote] ------------------------------------------ @sums = `ssh 131.188.30.105 bin/envup.server`;

foreach $_ (@sums) {
	chomp;
	if (/(^[a-f0-9]{32})[ ]{2}([^\s]+)$/) {
		$remote{$2} = $1;
		# print "$1 -> $2\n";
	} else {
		print "remote: can't match: <$_>\n";
	}
}
# [local] ------------------------------------------
$command = 'md5sum ' . join(' ', keys(%remote));
@sums = qx($command 2> /dev/null);
foreach $_ (@sums) {
	chomp;
	if (/(^[a-f0-9]{32})[ ]{2}([^\s]+)$/) {
		$local{$2} = $1;
		#print "$1 -> $2\n";
	} else {
		print "local can't match: <$_>\n";
	}
}
foreach my $file (keys(%remote)) {
	if (exists($local{$file})) {
		if ($remote{$file} ne $local{$file}) {
			push(@transfer, $file);
		}
	} else {
		push(@transfer, $file);
	}
}
if (@transfer) {
        $command = "ssh 131.188.30.105 -- tar cf - " . join(' ', @transfer) . " | tar xf -";
        system($command);
}
#!/bin/bash
md5sum $(find `cat $HOME/.env` -type f)
Previous: H. Peter AnvinNext: Thomas Glanzmann
Message 79 of 102 in “gitweb wishlist”
  1. Petr BaudisMay 11, 2005
  2. YOSHIFUJI Hideaki / 吉藤英明May 11, 2005
  3. Petr BaudisMay 11, 2005
  4. Kay SieversMay 11, 2005
  5. Jan-Benedict GlawMay 11, 2005
  6. Kay SieversMay 14, 2005
  7. Junio C HamanoMay 12, 2005
  8. Kay SieversMay 12, 2005
  9. Junio C HamanoMay 12, 2005
  10. Junio C HamanoJun 4, 2005
  11. Jonas FonsecaMay 13, 2005
  12. Kay SieversMay 14, 2005
  13. Kay SieversMay 14, 2005
  14. Jonas FonsecaMay 14, 2005
  15. Kay SieversMay 18, 2005
  16. Petr BaudisMay 18, 2005
  17. Linus TorvaldsMay 20, 2005
  18. Junio C HamanoMay 20, 2005
  19. Linus TorvaldsMay 20, 2005
  20. Kay SieversMay 20, 2005
  21. Linus TorvaldsMay 20, 2005
  22. Linus TorvaldsMay 20, 2005
  23. Kay SieversMay 20, 2005
  24. Thomas GlanzmannMay 20, 2005
  25. Linus TorvaldsMay 20, 2005
  26. Linus TorvaldsMay 20, 2005
  27. H. Peter AnvinMay 20, 2005
  28. Linus TorvaldsMay 20, 2005
  29. H. Peter AnvinMay 20, 2005
  30. Thomas GlanzmannMay 20, 2005
  31. Kay SieversMay 20, 2005
  32. H. Peter AnvinMay 20, 2005
  33. Linus TorvaldsMay 20, 2005
  34. Kay SieversMay 20, 2005
  35. Kay SieversMay 20, 2005
  36. Matthias UrlichsMay 21, 2005
  37. Kay SieversMay 21, 2005
  38. Linus TorvaldsMay 21, 2005
  39. cvs->git (was Re: gitweb wishlist)Matthias Urlichs, May 21, 2005
  40. David MansfieldMay 24, 2005
  41. H. Peter AnvinMay 24, 2005
  42. David MansfieldMay 24, 2005
  43. H. Peter AnvinMay 24, 2005
  44. Linus TorvaldsMay 24, 2005
  45. Linus TorvaldsMay 24, 2005
  46. Linus TorvaldsMay 24, 2005
  47. Linus TorvaldsMay 24, 2005
  48. David MansfieldMay 24, 2005
  49. David MansfieldMay 24, 2005
  50. David MansfieldMay 24, 2005
  51. David MansfieldMay 24, 2005
  52. Linus TorvaldsMay 24, 2005
  53. H. Peter AnvinMay 24, 2005
  54. David MansfieldMay 24, 2005
  55. Thomas GlanzmannMay 24, 2005
  56. Linus TorvaldsMay 24, 2005
  57. Linus TorvaldsMay 24, 2005
  58. Linus TorvaldsMay 24, 2005
  59. Thomas GlanzmannMay 24, 2005
  60. Linus TorvaldsMay 24, 2005
  61. Edgar ToernigMay 24, 2005
  62. Linus TorvaldsMay 24, 2005
  63. Junio C HamanoMay 25, 2005
  64. Linus TorvaldsMay 25, 2005
  65. Junio C HamanoMay 25, 2005
  66. David MansfieldMay 24, 2005
  67. Thomas GlanzmannMay 24, 2005
  68. Linus TorvaldsMay 24, 2005
  69. Linus TorvaldsMay 24, 2005
  70. David MansfieldMay 24, 2005
  71. Linus TorvaldsMay 24, 2005
  72. Thomas GlanzmannMay 24, 2005
  73. Linus TorvaldsMay 24, 2005
  74. Thomas GlanzmannMay 24, 2005
  75. Linus TorvaldsMay 24, 2005
  76. David MansfieldMay 24, 2005
  77. Linus TorvaldsMay 24, 2005
  78. H. Peter AnvinMay 24, 2005
  79. Thomas GlanzmannMay 24, 2005
  80. Thomas GlanzmannMay 24, 2005
  81. Kay SieversMay 24, 2005
  82. Linus TorvaldsMay 24, 2005
  83. Junio C HamanoMay 25, 2005
  84. Linus TorvaldsMay 25, 2005
  85. Junio C HamanoMay 25, 2005
  86. Kay SieversMay 25, 2005
  87. David GreavesMay 25, 2005
  88. Junio C HamanoMay 25, 2005
  89. David GreavesMay 25, 2005
  90. Kay SieversMay 25, 2005
  91. Kay SieversMay 25, 2005
  92. Junio C HamanoMay 25, 2005
  93. Junio C HamanoMay 25, 2005
  94. Linus TorvaldsMay 24, 2005
  95. Thomas GlanzmannMay 24, 2005
  96. Linus TorvaldsMay 24, 2005
  97. Thomas GlanzmannMay 24, 2005
  98. Junio C HamanoMay 24, 2005
  99. Junio C HamanoMay 24, 2005
  100. Martin LanghoffMay 24, 2005
  101. Thomas GlanzmannMay 24, 2005
  102. David MansfieldMay 26, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.