* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Johannes Schindelin @ 2007-11-12 16:13 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Ping Yin, Git Mailing List
In-Reply-To: <4738784F.7010106@viscovery.net>
Hi,
On Mon, 12 Nov 2007, Johannes Sixt wrote:
> Ping Yin schrieb:
> > git status/commit just treats submodules as ordinary files when
> > reporting status changes. However, one may also wonder how submodules
> > change (the commits).
> >
> > This commit teaches git status/commit to additionally show commit
> > summary of user-cared (i.e. checked out) modified submodules since
> > HEAD (or HEAD^ if --amend option is on). For submodules deleted or
> > initially added, commit summary are not shown.
>
> In general, I like the idea (as I've already pointed out).
>
> But at this time git-commit is about to be made a builtin, and since
> your implementation contains a lot of non-portable constructs ($'', >&)
> and a new dependency on awk (and, hence, has little chances of being
> accepted), I suggest that you stay tuned, and implement this in the
> forth-coming builtin-commit.c.
I agree.
> > A configuration variable 'submodule.status' is used to turn this
> > summary behaviour on or off (default off). Also --submodule and
> > --no-submodule options are added.
>
> There is already 'status.color', I suggest the configuration to become
> 'status.submoduleSummary'.
You could make this variable even a numeric one. Saying how many lines
you want to have maximally (-1 meaning unlimited).
Ciao,
Dscho
^ permalink raw reply
* Re: Cloning from kernel.org, then switching to another repo
From: Johannes Schindelin @ 2007-11-12 16:16 UTC (permalink / raw)
To: Jon Smirl; +Cc: Git Mailing List
In-Reply-To: <9e4733910711120736g31e3e84cx5a213afc4b889de7@mail.gmail.com>
Hi,
On Mon, 12 Nov 2007, Jon Smirl wrote:
> On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> > On Mon, 12 Nov 2007, Jon Smirl wrote:
> >
> > > git clone linus
> > > move origin to digispeaker.git
> >
> > AKA "git config remote.origin.url <your-digispeaker-url-here>"
>
> There is more to this:
You must be hiding something.
> jonsmirl@terra:~/foo$ git clone
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git ds
> clone.....
This sets up branch.master.{remote,merge} to {origin,master}.
> jonsmirl@terra:~/foo/ds$ git config remote.origin.url
> http://git.digispeaker.com/projects/digispeaker-kernel.git
This does not change that setting.
> jonsmirl@terra:~/foo/ds$ git pull
> You asked me to pull without telling me which branch you
> want to merge with, and 'branch.master.merge' in
> your configuration file does not tell me either. Please
> name which branch you want to merge on the command line and
> try again (e.g. 'git pull <repository> <refspec>').
> See git-pull(1) for details on the refspec.
And this does not come up here.
Maybe you don't have a master branch on digispeaker.
Ciao,
Dscho
^ permalink raw reply
* Re: What is the idea for bare repositories?
From: David Kastrup @ 2007-11-12 16:17 UTC (permalink / raw)
To: git
In-Reply-To: <20071112131927.GA1701@c3sl.ufpr.br>
Bruno Cesar Ribas <ribas@c3sl.ufpr.br> writes:
> A bare repository is the way to publish your changes to the public.
> git-daemon and http-clones use a bare repository that only contains
> adminsitrative files.
>
> From man page
> --bare Make a bare GIT repository. That is, instead of creating
> <directory> and placing the administrative files in
> <directory>/.git, make the <directory> itself the $GIT_DIR. This
> obviously implies the -n because there is nowhere to check out
> the working tree. Also the branch heads at the remote are copied
> directly to corresponding local branch heads, without mapping
> them to refs/remotes/origin/. When this option is used, neither
> remote-tracking branches nor the related configuration variables
> are created.
Fine. So why don't the following commands complain? Apart from
git-reset without arguments (which could probably get along without a
working dir), they are supposed to employ a working directory.
> On Mon, Nov 12, 2007 at 02:11:58PM +0100, David Kastrup wrote:
>>
>> I have a repository declared as bare. Some commands treat it as such,
>> other's don't. For example, I get
>>
>> git-diff [no complaint]
>> git-reset [no complaint]
>> git-reset --hard
>> HEAD is now at db862c1... installmanager.sh: setze GIT_WORK_TREE
--
David Kastrup
^ permalink raw reply
* [RFC PATCH] git-svn info: implement info command
From: David D. Kilzer @ 2007-11-12 16:19 UTC (permalink / raw)
To: git; +Cc: David D. Kilzer
Implement "git-svn info" for files and directories based on the "svn info"
command. Note that the -r/--revision argument is not supported yet.
Added 18 tests in t/t9117-git-svn-info.sh.
Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
---
Looking for feedback on this patch. Specifically, I'm looking for insight
for the two FIXME comments in the cmd_info() function added to git-svn.
(I can't help but think I'm missing a plumbing command or a basic concept.
Pointers to code, web pages or man pages are welcome.)
Note that I've tried to cover all the bases that "svn info" does (by using
tests), except supporting the -r/--revision argument.
I've also tried to be aggressive in extracting common code into functions.
Dave
Documentation/git-svn.txt | 5 +
git-svn.perl | 194 +++++++++++++++++++++++++++++++------
t/t9117-git-svn-info.sh | 236 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 403 insertions(+), 32 deletions(-)
create mode 100644 t/t9117-git-svn-info.sh
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 488e4b1..c3fc878 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -193,6 +193,11 @@ Any other arguments are passed directly to `git log'
repository (that has been init-ed with git-svn).
The -r<revision> option is required for this.
+'info'::
+ Shows information about a file or directory similar to what
+ `svn info' provides. Does not currently support a -r/--revision
+ argument.
+
--
OPTIONS
diff --git a/git-svn.perl b/git-svn.perl
index dd93e32..256a3e0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -48,7 +48,8 @@ BEGIN {
foreach (qw/command command_oneline command_noisy command_output_pipe
command_input_pipe command_close_pipe/) {
for my $package ( qw(SVN::Git::Editor SVN::Git::Fetcher
- Git::SVN::Migration Git::SVN::Log Git::SVN),
+ Git::SVN::Migration Git::SVN::Log Git::SVN
+ Git::SVN::Util),
__PACKAGE__) {
*{"${package}::$_"} = \&{"Git::$_"};
}
@@ -177,6 +178,8 @@ my %cmd = (
'file|F=s' => \$_file,
'revision|r=s' => \$_revision,
%cmt_opts } ],
+ 'info' => [ \&cmd_info, "Show info about the latest SVN revision on the current branch",
+ { } ],
);
my $cmd;
@@ -577,6 +580,23 @@ sub cmd_create_ignore {
});
}
+sub canonicalize_path {
+ my ($path) = @_;
+ my $dotSlashAdded = 0;
+ if (substr($path, 0, 1) ne "/") {
+ $path = "./" . $path;
+ $dotSlashAdded = 1;
+ }
+ # File::Spec->canonpath doesn't collapse x/../y into y (for a
+ # good reason), so let's do this manually.
+ $path =~ s#/+#/#g;
+ $path =~ s#/\.(?:/|$)#/#g;
+ $path =~ s#/[^/]+/\.\.##g;
+ $path =~ s#/$##g;
+ $path =~ s#^\./## if $dotSlashAdded;
+ return $path;
+}
+
# get_svnprops(PATH)
# ------------------
# Helper for cmd_propget and cmd_proplist below.
@@ -594,12 +614,7 @@ sub get_svnprops {
# canonicalize the path (otherwise libsvn will abort or fail to
# find the file)
- # File::Spec->canonpath doesn't collapse x/../y into y (for a
- # good reason), so let's do this manually.
- $path =~ s#/+#/#g;
- $path =~ s#/\.(?:/|$)#/#g;
- $path =~ s#/[^/]+/\.\.##g;
- $path =~ s#/$##g;
+ $path = canonicalize_path($path);
my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
my $props;
@@ -730,6 +745,96 @@ sub cmd_commit_diff {
}
}
+sub cmd_info {
+ my $path = canonicalize_path(shift or ".");
+ unless (scalar(@_) == 0) {
+ die "Too many arguments specified\n";
+ }
+
+ # FIXME: We use a combination of git-diff, git-ls-files and git-cat-file
+ # to divine the state and type of object that was passed in as $path.
+ # There has to be a better way. Note that only $diffStatus is used
+ # beyond setting $isDirectory below.
+
+ my $diffStatus = (split(' ', command_oneline(qw(diff --cached --name-status --), $path) || ""))[0] || "";
+ my $lsFiles = command_oneline(qw(ls-files), $path) || "";
+ if (!$diffStatus && !$lsFiles) {
+ print STDERR "$path: (Not a versioned resource)\n\n";
+ return;
+ }
+
+ my $catFileType = ($path eq "." || $diffStatus eq "A") ? "" : (command_oneline(qw(cat-file -t), "HEAD:$path") || "");
+ my $isDirectory = (-e $path && ! -f $path && ! -l $path || $diffStatus eq "D" && $catFileType eq "tree");
+
+ my $result = "Path: $path\n";
+ $result .= "Name: " . basename($path) . "\n" if !$isDirectory;
+
+ my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
+ unless ($gs) {
+ die "Unable to determine upstream SVN information from ",
+ "working tree history\n";
+ }
+ $result .= "URL: " . ($url . ($path eq "." ? "" : "/$path")) . "\n";
+
+ my $repos_root = $gs->ra->{repos_root};
+ Git::SVN::remove_username($repos_root);
+ $result .= "Repository Root: $repos_root\n";
+ $result .= "Repository UUID: $uuid\n" unless $diffStatus eq "A";
+ $result .= "Revision: " . ($diffStatus eq "A" ? 0 : $rev) . "\n";
+
+ $result .= "Node Kind: " . ($isDirectory ? "directory" : "file") . "\n";
+
+ my $schedule = ($diffStatus eq "A" ? "add" : ($diffStatus eq "D" ? "delete" : "normal"));
+ $result .= "Schedule: $schedule\n";
+
+ if ($diffStatus eq "A") {
+ print $result, "\n";
+ return;
+ }
+
+ my ($lc_author, $lc_rev, $lc_date_utc);
+ my @args = Git::SVN::Log::git_svn_log_cmd($rev, $rev, "--", $path);
+ my $log = command_output_pipe(@args);
+ my $esc_color = qr/(?:\033\[(?:(?:\d+;)*\d*)?m)*/;
+ while (<$log>) {
+ if (/^${esc_color}author (.+) <[^>]+> (\d+) ([\-\+]?\d+)$/o) {
+ $lc_author = $1;
+ $lc_date_utc = Git::SVN::Log::parse_git_date($2, $3);
+ } elsif (/^${esc_color} (git-svn-id:.+)$/o) {
+ (undef, $lc_rev, undef) = ::extract_metadata($1);
+ }
+ }
+ close $log;
+
+ Git::SVN::Log::set_local_timezone();
+
+ $result .= "Last Changed Author: $lc_author\n";
+ $result .= "Last Changed Rev: $lc_rev\n";
+ $result .= "Last Changed Date: " . Git::SVN::Log::format_svn_date($lc_date_utc) . "\n";
+
+ if (!$isDirectory) {
+ my $textLastUpdatedDate = ($diffStatus eq "D" ? $lc_date_utc : (stat $path)[9]);
+ $result .= "Text Last Updated: " . Git::SVN::Log::format_svn_date($textLastUpdatedDate) . "\n";
+ my $checksum;
+ # FIXME: We fail to generate the correct checksum for deleted
+ # symlinks here. How do we know if a deleted file was a symlink?
+ if ($diffStatus eq "D") {
+ my ($fh, $ctx) = command_output_pipe(qw(cat-file blob), "HEAD:$path");
+ $checksum = Git::SVN::Util::md5sum($fh);
+ command_close_pipe($fh, $ctx);
+ } elsif (-l $path) {
+ $checksum = Git::SVN::Util::md5sum("link " . command(qw(cat-file blob), "HEAD:$path"));
+ } else {
+ open FILE, "<", $path or die $!;
+ $checksum = Git::SVN::Util::md5sum(\*FILE);
+ close FILE or die $!;
+ }
+ $result .= "Checksum: " . $checksum . "\n";
+ }
+
+ print $result, "\n";
+}
+
########################### utility functions #########################
sub rebase_cmd {
@@ -1037,6 +1142,27 @@ sub linearize_history {
(\@linear_refs, \%parents);
}
+package Git::SVN::Util;
+use strict;
+use warnings;
+use Digest::MD5;
+
+sub md5sum {
+ my $arg = shift;
+ my $ref = ref $arg;
+ my $md5 = Digest::MD5->new();
+ if ($ref eq 'GLOB' || $ref eq 'IO::File') {
+ $md5->addfile($arg) or croak $!;
+ } elsif ($ref eq 'SCALAR') {
+ $md5->add($$arg) or croak $!;
+ } elsif (!$ref) {
+ $md5->add($arg) or croak $!;
+ } else {
+ ::fatal "Can't provide MD5 hash for unknown ref type: '", $ref, "'";
+ }
+ return $md5->hexdigest();
+}
+
package Git::SVN;
use strict;
use warnings;
@@ -2582,7 +2708,6 @@ use strict;
use warnings;
use Carp qw/croak/;
use IO::File qw//;
-use Digest::MD5;
# file baton members: path, mode_a, mode_b, pool, fh, blob, base
sub new {
@@ -2734,9 +2859,7 @@ sub apply_textdelta {
if (defined $exp) {
seek $base, 0, 0 or croak $!;
- my $md5 = Digest::MD5->new;
- $md5->addfile($base);
- my $got = $md5->hexdigest;
+ my $got = Git::SVN::Util::md5sum($base);
die "Checksum mismatch: $fb->{path} $fb->{blob}\n",
"expected: $exp\n",
" got: $got\n" if ($got ne $exp);
@@ -2755,9 +2878,7 @@ sub close_file {
if (my $fh = $fb->{fh}) {
if (defined $exp) {
seek($fh, 0, 0) or croak $!;
- my $md5 = Digest::MD5->new;
- $md5->addfile($fh);
- my $got = $md5->hexdigest;
+ my $got = Git::SVN::Util::md5sum($fh);
if ($got ne $exp) {
die "Checksum mismatch: $path\n",
"expected: $exp\n got: $got\n";
@@ -2809,7 +2930,6 @@ use strict;
use warnings;
use Carp qw/croak/;
use IO::File;
-use Digest::MD5;
sub new {
my ($class, $opts) = @_;
@@ -3113,11 +3233,9 @@ sub chg_file {
$fh->flush == 0 or croak $!;
seek $fh, 0, 0 or croak $!;
- my $md5 = Digest::MD5->new;
- $md5->addfile($fh) or croak $!;
+ my $exp = Git::SVN::Util::md5sum($fh);
seek $fh, 0, 0 or croak $!;
- my $exp = $md5->hexdigest;
my $pool = SVN::Pool->new;
my $atd = $self->apply_textdelta($fbat, undef, $pool);
my $got = SVN::TxDelta::send_stream($fh, @$atd, $pool);
@@ -3810,6 +3928,29 @@ sub run_pager {
exec $pager or ::fatal "Can't run pager: $! ($pager)";
}
+sub format_svn_date {
+ return strftime("%Y-%m-%d %H:%M:%S %z (%a, %d %b %Y)", localtime(shift));
+}
+
+sub parse_git_date {
+ my ($t, $tz) = @_;
+ # Date::Parse isn't in the standard Perl distro :(
+ if ($tz =~ s/^\+//) {
+ $t += tz_to_s_offset($tz);
+ } elsif ($tz =~ s/^\-//) {
+ $t -= tz_to_s_offset($tz);
+ }
+ return $t;
+}
+
+sub set_local_timezone {
+ if (defined $TZ) {
+ $ENV{TZ} = $TZ;
+ } else {
+ delete $ENV{TZ};
+ }
+}
+
sub tz_to_s_offset {
my ($tz) = @_;
$tz =~ s/(\d\d)$//;
@@ -3830,13 +3971,7 @@ sub get_author_info {
$dest->{t} = $t;
$dest->{tz} = $tz;
$dest->{a} = $au;
- # Date::Parse isn't in the standard Perl distro :(
- if ($tz =~ s/^\+//) {
- $t += tz_to_s_offset($tz);
- } elsif ($tz =~ s/^\-//) {
- $t -= tz_to_s_offset($tz);
- }
- $dest->{t_utc} = $t;
+ $dest->{t_utc} = parse_git_date($t, $tz);
}
sub process_commit {
@@ -3890,8 +4025,7 @@ sub show_commit_normal {
my ($c) = @_;
print '-' x72, "\nr$c->{r} | ";
print "$c->{c} | " if $show_commit;
- print "$c->{a} | ", strftime("%Y-%m-%d %H:%M:%S %z (%a, %d %b %Y)",
- localtime($c->{t_utc})), ' | ';
+ print "$c->{a} | ", format_svn_date($c->{t_utc}), ' | ';
my $nr_line = 0;
if (my $l = $c->{l}) {
@@ -3931,11 +4065,7 @@ sub cmd_show_log {
my (@args) = @_;
my ($r_min, $r_max);
my $r_last = -1; # prevent dupes
- if (defined $TZ) {
- $ENV{TZ} = $TZ;
- } else {
- delete $ENV{TZ};
- }
+ set_local_timezone();
if (defined $::_revision) {
if ($::_revision =~ /^(\d+):(\d+)$/) {
($r_min, $r_max) = ($1, $2);
diff --git a/t/t9117-git-svn-info.sh b/t/t9117-git-svn-info.sh
new file mode 100644
index 0000000..b20db04
--- /dev/null
+++ b/t/t9117-git-svn-info.sh
@@ -0,0 +1,236 @@
+#!/bin/sh
+#
+# Copyright (c) 2007 David D. Kilzer
+
+test_description='git-svn info'
+
+. ./lib-git-svn.sh
+
+test_expect_success 'setup repository and import' "
+ rm -rf info gitwc svnwc &&
+ mkdir info &&
+ cd info &&
+ echo one > file &&
+ ln -s file symlink-file &&
+ mkdir directory &&
+ touch directory/.placeholder &&
+ ln -s directory symlink-directory &&
+ svn import -m 'initial' . $svnrepo &&
+ cd .. &&
+ mkdir gitwc &&
+ cd gitwc &&
+ git-svn init $svnrepo &&
+ git-svn fetch &&
+ cd .. &&
+ svn co $svnrepo svnwc &&
+ touch -c -r svnwc/file gitwc/file &&
+ touch -c -r svnwc/directory gitwc/directory &&
+ touch -c -r svnwc/symlink-file gitwc/symlink-file &&
+ touch -c -r svnwc/symlink-directory gitwc/symlink-directory
+ "
+
+test_expect_success 'info no arguments' "
+ (cd svnwc; svn info) > expected.info-no-arguments &&
+ (cd gitwc; git-svn info) > actual.info-no-arguments &&
+ diff -u expected.info-no-arguments actual.info-no-arguments
+ "
+
+test_expect_success 'info dot' "
+ (cd svnwc; svn info .) > expected.info-dot &&
+ (cd gitwc; git-svn info .) > actual.info-dot &&
+ diff -u expected.info-dot actual.info-dot
+ "
+
+test_expect_success 'info file' "
+ (cd svnwc; svn info file) > expected.info-file &&
+ (cd gitwc; git-svn info file) > actual.info-file &&
+ diff -u expected.info-file actual.info-file
+ "
+
+test_expect_success 'info directory' "
+ (cd svnwc; svn info directory) > expected.info-directory &&
+ (cd gitwc; git-svn info directory) > actual.info-directory &&
+ diff -u expected.info-directory actual.info-directory
+ "
+
+test_expect_success 'info symlink-file' "
+ (cd svnwc; svn info symlink-file) > expected.info-symlink-file &&
+ (cd gitwc; git-svn info symlink-file) > actual.info-symlink-file &&
+ diff -u expected.info-symlink-file actual.info-symlink-file
+ "
+
+test_expect_success 'info symlink-directory' "
+ (cd svnwc; svn info symlink-directory) > expected.info-symlink-directory &&
+ (cd gitwc; git-svn info symlink-directory) > actual.info-symlink-directory &&
+ diff -u expected.info-symlink-directory actual.info-symlink-directory
+ "
+
+test_expect_success 'info added-file' "
+ echo two > gitwc/added-file &&
+ cd gitwc &&
+ git add added-file &&
+ cd .. &&
+ cp -p gitwc/added-file svnwc/added-file &&
+ touch -r gitwc/added-file svnwc/added-file &&
+ cd svnwc &&
+ svn add added-file > /dev/null &&
+ cd .. &&
+ (cd svnwc; svn info added-file) > expected.info-added-file &&
+ (cd gitwc; git-svn info added-file) > actual.info-added-file &&
+ diff -u expected.info-added-file actual.info-added-file
+ "
+
+test_expect_success 'info added-directory' "
+ mkdir gitwc/added-directory svnwc/added-directory &&
+ touch -r gitwc/added-directory svnwc/added-directory &&
+ touch gitwc/added-directory/.placeholder &&
+ cd svnwc &&
+ svn add added-directory > /dev/null &&
+ cd .. &&
+ cd gitwc &&
+ git add added-directory &&
+ cd .. &&
+ (cd svnwc; svn info added-directory) > expected.info-added-directory &&
+ (cd gitwc; git-svn info added-directory) > actual.info-added-directory &&
+ diff -u expected.info-added-directory actual.info-added-directory
+ "
+
+test_expect_success 'info added-symlink-file' "
+ cd gitwc &&
+ ln -s added-file added-symlink-file &&
+ git add added-symlink-file &&
+ cd .. &&
+ cd svnwc &&
+ ln -s added-file added-symlink-file &&
+ svn add added-symlink-file > /dev/null &&
+ cd .. &&
+ touch -r gitwc/added-symlink-file svnwc/added-symlink-file &&
+ (cd svnwc; svn info added-symlink-file) > expected.info-added-symlink-file &&
+ (cd gitwc; git-svn info added-symlink-file) > actual.info-added-symlink-file &&
+ diff -u expected.info-added-symlink-file actual.info-added-symlink-file
+ "
+
+test_expect_success 'info added-symlink-directory' "
+ cd gitwc &&
+ ln -s added-directory added-symlink-directory &&
+ git add added-symlink-directory &&
+ cd .. &&
+ cd svnwc &&
+ ln -s added-directory added-symlink-directory &&
+ svn add added-symlink-directory > /dev/null &&
+ cd .. &&
+ touch -r gitwc/added-symlink-directory svnwc/added-symlink-directory &&
+ (cd svnwc; svn info added-symlink-directory) > expected.info-added-symlink-directory &&
+ (cd gitwc; git-svn info added-symlink-directory) > actual.info-added-symlink-directory &&
+ diff -u expected.info-added-symlink-directory actual.info-added-symlink-directory
+ "
+
+replace_Text_Last_Updated_date () {
+ REPLACEMENT=`cat $1 | grep '^Last Changed Date:' | sed -e 's/Last Changed Date/Text Last Updated/'` &&
+ cat $1 | sed -e "s/^Text Last Updated: .*\$/${REPLACEMENT}/" > $1.$$ &&
+ mv -f $1.$$ $1
+}
+
+test_expect_success 'info deleted-file' "
+ cd gitwc &&
+ git rm -f file > /dev/null &&
+ cd .. &&
+ cd svnwc &&
+ svn rm --force file > /dev/null &&
+ cd .. &&
+ (cd svnwc; svn info file) > expected.info-deleted-file &&
+ (cd gitwc; git-svn info file) > actual.info-deleted-file &&
+ replace_Text_Last_Updated_date expected.info-deleted-file &&
+ diff -u expected.info-deleted-file actual.info-deleted-file
+ "
+
+test_expect_success 'info deleted-directory' "
+ cd gitwc &&
+ git rm -r -f directory > /dev/null &&
+ cd .. &&
+ cd svnwc &&
+ svn rm --force directory > /dev/null &&
+ cd .. &&
+ (cd svnwc; svn info directory) > expected.info-deleted-directory &&
+ (cd gitwc; git-svn info directory) > actual.info-deleted-directory &&
+ replace_Text_Last_Updated_date expected.info-deleted-directory &&
+ diff -u expected.info-deleted-directory actual.info-deleted-directory
+ "
+
+test_expect_success 'info deleted-symlink-file' "
+ cd gitwc &&
+ git rm -f symlink-file > /dev/null &&
+ cd .. &&
+ cd svnwc &&
+ svn rm --force symlink-file > /dev/null &&
+ cd .. &&
+ (cd svnwc; svn info symlink-file) > expected.info-deleted-symlink-file &&
+ (cd gitwc; git-svn info symlink-file) > actual.info-deleted-symlink-file &&
+ replace_Text_Last_Updated_date expected.info-deleted-symlink-file &&
+ diff -u expected.info-deleted-symlink-file actual.info-deleted-symlink-file
+ "
+
+test_expect_success 'info deleted-symlink-directory' "
+ cd gitwc &&
+ git rm -f symlink-directory > /dev/null &&
+ cd .. &&
+ cd svnwc &&
+ svn rm --force symlink-directory > /dev/null &&
+ cd .. &&
+ (cd svnwc; svn info symlink-directory) > expected.info-deleted-symlink-directory &&
+ (cd gitwc; git-svn info symlink-directory) > actual.info-deleted-symlink-directory &&
+ replace_Text_Last_Updated_date expected.info-deleted-symlink-directory &&
+ diff -u expected.info-deleted-symlink-directory actual.info-deleted-symlink-directory
+ "
+
+# NOTE: git does not have the concept of replaced objects, so we can't test for them.
+#test_expect_success 'info replaced-file' "/usr/bin/true"
+#test_expect_success 'info replaced-directory' "/usr/bin/true"
+#test_expect_success 'info replaced-symlink-file' "/usr/bin/true"
+#test_expect_success 'info replaced-symlink-directory' "/usr/bin/true"
+
+test_expect_success 'info unknown-file' "
+ echo two > gitwc/unknown-file &&
+ cp -p gitwc/unknown-file svnwc/unknown-file &&
+ touch -r gitwc/unknown-file svnwc/unknown-file &&
+ (cd svnwc; svn info unknown-file) 2> expected.info-unknown-file &&
+ (cd gitwc; git-svn info unknown-file) 2> actual.info-unknown-file &&
+ diff -u expected.info-unknown-file actual.info-unknown-file
+ "
+
+test_expect_success 'info unknown-directory' "
+ mkdir gitwc/unknown-directory svnwc/unknown-directory &&
+ touch -r gitwc/unknown-directory svnwc/unknown-directory &&
+ touch gitwc/unknown-directory/.placeholder &&
+ (cd svnwc; svn info unknown-directory) 2> expected.info-unknown-directory &&
+ (cd gitwc; git-svn info unknown-directory) 2> actual.info-unknown-directory &&
+ diff -u expected.info-unknown-directory actual.info-unknown-directory
+ "
+
+test_expect_success 'info unknown-symlink-file' "
+ cd gitwc &&
+ ln -s unknown-file unknown-symlink-file &&
+ cd .. &&
+ cd svnwc &&
+ ln -s unknown-file unknown-symlink-file &&
+ cd .. &&
+ touch -r gitwc/unknown-symlink-file svnwc/unknown-symlink-file &&
+ (cd svnwc; svn info unknown-symlink-file) 2> expected.info-unknown-symlink-file &&
+ (cd gitwc; git-svn info unknown-symlink-file) 2> actual.info-unknown-symlink-file &&
+ diff -u expected.info-unknown-symlink-file actual.info-unknown-symlink-file
+ "
+
+test_expect_success 'info unknown-symlink-directory' "
+ cd gitwc &&
+ ln -s unknown-directory unknown-symlink-directory &&
+ cd .. &&
+ cd svnwc &&
+ ln -s unknown-directory unknown-symlink-directory &&
+ cd .. &&
+ touch -r gitwc/unknown-symlink-directory svnwc/unknown-symlink-directory &&
+ (cd svnwc; svn info unknown-symlink-directory) 2> expected.info-unknown-symlink-directory &&
+ (cd gitwc; git-svn info unknown-symlink-directory) 2> actual.info-unknown-symlink-directory &&
+ diff -u expected.info-unknown-symlink-directory actual.info-unknown-symlink-directory
+ "
+
+test_done
--
1.5.3.4
^ permalink raw reply related
* Re: What is the idea for bare repositories?
From: Jan Wielemaker @ 2007-11-12 16:19 UTC (permalink / raw)
To: git
In-Reply-To: <Pine.LNX.4.64.0711121355380.4362@racer.site>
On Monday 12 November 2007 14:57, Johannes Schindelin wrote:
> Hi,
>
> On Mon, 12 Nov 2007, Bruno Cesar Ribas wrote:
> > A bare repository is the way to publish your changes to the public.
> > git-daemon and http-clones use a bare repository that only contains
> > adminsitrative files.
>
> More to the point, a bare repository is one which does not have a working
> directory attached.
>
> As such, many commands do not make any sense at all, such as "git add"
> (_what_ do you want to add? There is not even a working directory to work
> with!), or "git commit".
As we are on the subject anyway. Though not tested with the very latest,
but when I was playing with them, I found out that cloning a empty bare
repository produces nothing at all, dispite the promising message:
$ mkdir x && cd x
$ git --bare init --shared=group
Initialized empty shared Git repository in /home/nobackup/jan/tmp/x/
$ cd ..
$ git clone x y
Initialized empty Git repository in /home/jan/nobackup/tmp/y/.git/
$ ls y
ls: cannot access y: No such file or directory
Is this a bug?
--- Jan
^ permalink raw reply
* Re: Cloning from kernel.org, then switching to another repo
From: Jon Smirl @ 2007-11-12 16:22 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailing List
In-Reply-To: <Pine.LNX.4.64.0711121613570.4362@racer.site>
On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 12 Nov 2007, Jon Smirl wrote:
>
> > On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> >
> > > On Mon, 12 Nov 2007, Jon Smirl wrote:
> > >
> > > > git clone linus
> > > > move origin to digispeaker.git
> > >
> > > AKA "git config remote.origin.url <your-digispeaker-url-here>"
> >
> > There is more to this:
>
> You must be hiding something.
>
> > jonsmirl@terra:~/foo$ git clone
> > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git ds
> > clone.....
>
> This sets up branch.master.{remote,merge} to {origin,master}.
>
> > jonsmirl@terra:~/foo/ds$ git config remote.origin.url
> > http://git.digispeaker.com/projects/digispeaker-kernel.git
>
> This does not change that setting.
It edited origin:[remote "origin"]
url = http://git.digispeaker.com/projects/digispeaker-kernel.git
fetch = +refs/heads/*:refs/remotes/origin/*
> > jonsmirl@terra:~/foo/ds$ git pull
> > You asked me to pull without telling me which branch you
> > want to merge with, and 'branch.master.merge' in
> > your configuration file does not tell me either. Please
> > name which branch you want to merge on the command line and
> > try again (e.g. 'git pull <repository> <refspec>').
> > See git-pull(1) for details on the refspec.
>
> And this does not come up here.
>
> Maybe you don't have a master branch on digispeaker.
At digispeaker remote repo:
[daedalus]$ git branch
m24
m25
m26
m28
m29
* master
[daedalus]$
gitweb is at:
git.digispeaker.com
[daedalus]$ cd refs
[daedalus]$ find
.
./heads
./heads/m24
./heads/m25
./heads/m26
./heads/m28
./heads/m29
./heads/master
./tags
[daedalus]$
>
> Ciao,
> Dscho
>
>
--
Jon Smirl
jonsmirl@gmail.com
^ permalink raw reply
* Cloning empty repositories, was Re: What is the idea for bare repositories?
From: Johannes Schindelin @ 2007-11-12 16:34 UTC (permalink / raw)
To: Jan Wielemaker; +Cc: git
In-Reply-To: <200711121719.54146.wielemak@science.uva.nl>
Hi,
On Mon, 12 Nov 2007, Jan Wielemaker wrote:
> I found out that cloning a empty bare repository produces nothing at
> all, [...]
If they are empty, what exactly do you mean to clone?
Ciao,
Dscho
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Ping Yin @ 2007-11-12 16:35 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Git Mailing List
In-Reply-To: <4738784F.7010106@viscovery.net>
On Nov 12, 2007 11:59 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
> But at this time git-commit is about to be made a builtin, and since your
> implementation contains a lot of non-portable constructs ($'', >&) and a new
> dependency on awk (and, hence, has little chances of being accepted), I
> suggest that you stay tuned, and implement this in the forth-coming
> builtin-commit.c.
Implement this in shell scripts is just a piece of cake, but not so
easy in builtin-commit.c. Not to mention that i'm unamiliar with git c
code. $', >& portable problem can be easily corrected. However, awk is
a new dependency? I have seen it in git-mergetool.sh
>
> > A configuration variable 'submodule.status' is used to turn this summary
> > behaviour on or off (default off). Also --submodule and --no-submodule options
> > are added.
>
> There is already 'status.color', I suggest the configuration to become
> 'status.submoduleSummary'.
There is 'status.color', but 'color.status' is prefered as said in the
documentation. So i follows this rule, name the variable submodule.*
just as the ones for git-submodule. I think it's a good idea to put
all submodule related configuration variables in the submodule.*
namespaces.
>
> -- Hannes
>
>
--
Ping Yin
^ permalink raw reply
* Re: Cloning from kernel.org, then switching to another repo
From: Johannes Schindelin @ 2007-11-12 16:36 UTC (permalink / raw)
To: Jon Smirl; +Cc: Git Mailing List
In-Reply-To: <9e4733910711120822x18019fe6v40eb8ee0e48282dd@mail.gmail.com>
Hi,
On Mon, 12 Nov 2007, Jon Smirl wrote:
> On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> > On Mon, 12 Nov 2007, Jon Smirl wrote:
> >
> > > jonsmirl@terra:~/foo$ git clone
> > > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git ds
> > > clone.....
> >
> > This sets up branch.master.{remote,merge} to {origin,master}.
You haven't shown me that this is set correctly in your set up, and if it
is, when it stops being correctly set up.
Ciao,
Dscho
^ permalink raw reply
* Re: What is the idea for bare repositories?
From: Jakub Narebski @ 2007-11-12 16:37 UTC (permalink / raw)
To: git
In-Reply-To: <86pryf7815.fsf@lola.quinscape.zz>
David Kastrup wrote:
> Bruno Cesar Ribas <ribas@c3sl.ufpr.br> writes:
>
>> A bare repository is the way to publish your changes to the public.
>> git-daemon and http-clones use a bare repository that only contains
>> adminsitrative files.
[...]
>
> Fine. So why don't the following commands complain? Apart from
> git-reset without arguments (which could probably get along without a
> working dir), they are supposed to employ a working directory.
>
>> On Mon, Nov 12, 2007 at 02:11:58PM +0100, David Kastrup wrote:
>>>
>>> I have a repository declared as bare. Some commands treat it as such,
>>> other's don't. For example, I get
>>>
>>> git-diff [no complaint]
>>> git-reset [no complaint]
>>> git-reset --hard
>>> HEAD is now at db862c1... installmanager.sh: setze GIT_WORK_TREE
git-diff can compare tree and tree, or tree and index; only for
comparing tree and files of index and files it needs working dir.
git-reset resets only refs and index. git-reset --hard resets also
files, so it needs working directory. Perhaps it should fail completely
and not only after doing mixed (non-hard) reset if we are in bare
repository.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Ping Yin @ 2007-11-12 16:39 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Johannes Sixt, Git Mailing List
In-Reply-To: <Pine.LNX.4.64.0711121612250.4362@racer.site>
On Nov 13, 2007 12:13 AM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> >
> > There is already 'status.color', I suggest the configuration to become
> > 'status.submoduleSummary'.
>
> You could make this variable even a numeric one. Saying how many lines
> you want to have maximally (-1 meaning unlimited).
Good idea.
However, there is a problem about limiting the lines of commit
summary: if there are 50 backwards and 50 forwards, and summary lines
are limited to 50 lines. How to display? 25 backwards, 25 forwards or
only 50 backwards?
>
> Ciao,
> Dscho
>
>
--
Ping Yin
^ permalink raw reply
* Re: What is the idea for bare repositories?
From: Jakub Narebski @ 2007-11-12 16:39 UTC (permalink / raw)
To: git
In-Reply-To: <200711121719.54146.wielemak@science.uva.nl>
Jan Wielemaker wrote:
> As we are on the subject anyway. Though not tested with the very latest,
> but when I was playing with them, I found out that cloning a empty bare
> repository produces nothing at all, dispite the promising message:
>
> $ mkdir x && cd x
> $ git --bare init --shared=group
Note that "git --bare init" and "git init --bare" are two *different*
things (first is no-op, by the way).
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: Cloning empty repositories, was Re: What is the idea for bare repositories?
From: Matthieu Moy @ 2007-11-12 16:41 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Jan Wielemaker, git
In-Reply-To: <Pine.LNX.4.64.0711121624330.4362@racer.site>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Hi,
>
> On Mon, 12 Nov 2007, Jan Wielemaker wrote:
>
>> I found out that cloning a empty bare repository produces nothing at
>> all, [...]
>
> If they are empty, what exactly do you mean to clone?
I'd expect an empty repository, with the git remote configured
correctly.
I already mentionned this here (but didn't take time to write a
patch), a typical use-case is when I want to create a new project. I'd
like to initialize an empty bare repo on my backed up disk, and then
clone it to my local-fast-unreliable disk to get a working copy and do
the first commit there.
Currently, I have to create both independantly, and configure the
remote myself. Not terrible, but not conveinient either ;-).
--
Matthieu
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Ping Yin @ 2007-11-12 16:42 UTC (permalink / raw)
To: Jakub Narebski; +Cc: git
In-Reply-To: <fh9u0i$n93$1@ger.gmane.org>
On Nov 13, 2007 12:12 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> Johannes Sixt wrote:
>
> >> A configuration variable 'submodule.status' is used to turn this summary
> >> behaviour on or off (default off). Also --submodule and --no-submodule options
> >> are added.
> >
> > There is already 'status.color', I suggest the configuration to become
> > 'status.submoduleSummary'.
>
> Or status.submodule.summary, although we usually use
> section.<variable_sub>.key configuration variables,
> e.g. branch.<name>.remote. But we have exception:
> color.branch.<slot>
maybe submodule.status.summary better?
later new variables can be added easily such as
submodule.status.recursive, submodule.diff, submodule.log
>
> --
>
> Jakub Narebski
> Warsaw, Poland
> ShadeHawk on #git
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Ping Yin
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Johannes Sixt @ 2007-11-12 16:45 UTC (permalink / raw)
To: Ping Yin; +Cc: Git Mailing List
In-Reply-To: <46dff0320711120835h31166370k64e9c92e9cf3432c@mail.gmail.com>
Ping Yin schrieb:
> On Nov 12, 2007 11:59 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>
>> But at this time git-commit is about to be made a builtin, and since your
>> implementation contains a lot of non-portable constructs ($'', >&) and a new
>> dependency on awk (and, hence, has little chances of being accepted), I
>> suggest that you stay tuned, and implement this in the forth-coming
>> builtin-commit.c.
> Implement this in shell scripts is just a piece of cake, but not so
> easy in builtin-commit.c.
I'm with you. But git-commit.sh is a dead horse, no matter how hard you beat it.
BTW, maybe you can keep the log generation in a helper script,
git-status--submodulesummary, and invoke that from builtin-commit.c. This
way you get both: integration and ease of implementation.
>>> A configuration variable 'submodule.status' is used to turn this summary
>>> behaviour on or off (default off). Also --submodule and --no-submodule options
>>> are added.
>> There is already 'status.color', I suggest the configuration to become
>> 'status.submoduleSummary'.
> There is 'status.color', but 'color.status' is prefered as said in the
> documentation. So i follows this rule, name the variable submodule.*
> just as the ones for git-submodule. I think it's a good idea to put
> all submodule related configuration variables in the submodule.*
> namespaces.
"I think it's a good idea to put all status related configuration variables
in the status.* namespace."
But I don't care too deeply. I don't have the big picture about which
configuration variables namespaces exist and which one to pick in this case.
-- Hannes
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Johannes Sixt @ 2007-11-12 16:51 UTC (permalink / raw)
To: Ping Yin; +Cc: Johannes Schindelin, Git Mailing List
In-Reply-To: <46dff0320711120839q7fc0542frd90a396237c144bf@mail.gmail.com>
Ping Yin schrieb:
> On Nov 13, 2007 12:13 AM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
>
>>> There is already 'status.color', I suggest the configuration to become
>>> 'status.submoduleSummary'.
>> You could make this variable even a numeric one. Saying how many lines
>> you want to have maximally (-1 meaning unlimited).
> Good idea.
> However, there is a problem about limiting the lines of commit
> summary: if there are 50 backwards and 50 forwards, and summary lines
> are limited to 50 lines. How to display? 25 backwards, 25 forwards or
> only 50 backwards?
Just use git log --left-right --topo-order, then you can easily insert -$n,
and git-log will decide where it cuts off the lists.
However, --left-right won't reverse one of the list, like you did.
-- Hannes
^ permalink raw reply
* Re: [PATCH] status&commit: Teach them to show submodule commit summary
From: Brian Gernhardt @ 2007-11-12 16:53 UTC (permalink / raw)
To: Ping Yin; +Cc: Ralf Wildenhues, git
In-Reply-To: <46dff0320711120717gf8a67cdn2b6bdaa9cfa29218@mail.gmail.com>
On Nov 12, 2007, at 10:17 AM, Ping Yin wrote:
> I just guess '\r' is need for Mac OS because i havn't Mac OS
> environment.
> BTW, how to add a literal carriage return?
OS X's command line environment is modeled after BSD and uses the nice
and sane \n as a line ending. And since earlier Mac OS versions (that
did use \r) don't have a command line, I don't see people using git on
them.
~~ Brian
^ permalink raw reply
* Re: What is the idea for bare repositories?
From: David Kastrup @ 2007-11-12 16:54 UTC (permalink / raw)
To: git
In-Reply-To: <fh9vgu$u75$1@ger.gmane.org>
Jakub Narebski <jnareb@gmail.com> writes:
> David Kastrup wrote:
>
>> Bruno Cesar Ribas <ribas@c3sl.ufpr.br> writes:
>>
>>> A bare repository is the way to publish your changes to the public.
>>> git-daemon and http-clones use a bare repository that only contains
>>> adminsitrative files.
> [...]
>>
>> Fine. So why don't the following commands complain? Apart from
>> git-reset without arguments (which could probably get along without a
>> working dir), they are supposed to employ a working directory.
>>
>>> On Mon, Nov 12, 2007 at 02:11:58PM +0100, David Kastrup wrote:
>>>>
>>>> I have a repository declared as bare. Some commands treat it as such,
>>>> other's don't. For example, I get
>>>>
>>>> git-diff [no complaint]
>>>> git-reset [no complaint]
>>>> git-reset --hard
>>>> HEAD is now at db862c1... installmanager.sh: setze GIT_WORK_TREE
>
> git-diff can compare tree and tree, or tree and index; only for
> comparing tree and files of index and files it needs working dir.
Well, if called without arguments (as above), it compares tree and
index. So it should complain about not having a tree. It doesn't.
> git-reset resets only refs and index. git-reset --hard resets also
> files, so it needs working directory. Perhaps it should fail
> completely and not only after doing mixed (non-hard) reset if we are
> in bare repository.
Please reread the above: it does not fail at all. Neither before nor
after the mixed reset.
--
David Kastrup
^ permalink raw reply
* [PATCH] git-svn: Document the `create-ignore', `propget' and `proplist' subcommands.
From: Benoit Sigoure @ 2007-11-12 17:13 UTC (permalink / raw)
To: git; +Cc: normalperson, Benoit Sigoure
In-Reply-To: <1192545412-10929-4-git-send-email-tsuna@lrde.epita.fr>
Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
---
I forgot to do this when I added these options to git-svn, my bad, sorry about
that. I think mentioning the current limitation of the implementation of
propget and proplist is worthwhile, I wouldn't like to be surprised by this.
Moreover, this is the kind of thing that's going to be fixed (or rather
"enhanced" I should say), one day or another.
Documentation/git-svn.txt | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 488e4b1..0d5406d 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -182,6 +182,9 @@ Any other arguments are passed directly to `git log'
directories. The output is suitable for appending to
the $GIT_DIR/info/exclude file.
+'create-ignore'::
+ Create a .gitignore file per svn:ignore.
+
'commit-diff'::
Commits the diff of two tree-ish arguments from the
command-line. This command is intended for interoperability with
@@ -193,6 +196,16 @@ Any other arguments are passed directly to `git log'
repository (that has been init-ed with git-svn).
The -r<revision> option is required for this.
+'propget'::
+ Print the value of a property on a file or directory.
+ The current implementation needs access to the SVN repository to
+ perform this operation.
+
+'proplist'::
+ List all properties of a file or directory.
+ The current implementation needs access to the SVN repository to
+ perform this operation.
+
--
OPTIONS
--
1.5.3.5.654.gdd5ec
^ permalink raw reply related
* Re: Cloning empty repositories, was Re: What is the idea for bare repositories?
From: Johannes Schindelin @ 2007-11-12 17:15 UTC (permalink / raw)
To: Matthieu Moy; +Cc: Jan Wielemaker, git
In-Reply-To: <vpq3avbv2ju.fsf@bauges.imag.fr>
Hi,
On Mon, 12 Nov 2007, Matthieu Moy wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > On Mon, 12 Nov 2007, Jan Wielemaker wrote:
> >
> >> I found out that cloning a empty bare repository produces nothing at
> >> all, [...]
> >
> > If they are empty, what exactly do you mean to clone?
>
> I'd expect an empty repository, with the git remote configured
> correctly.
Yeah, right.
Last time I checked, those geneticists did not clone thin air. They
always waited until they had something to clone.
Ciao,
Dscho
^ permalink raw reply
* Re: Cloning from kernel.org, then switching to another repo
From: Jon Smirl @ 2007-11-12 17:21 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailing List
In-Reply-To: <Pine.LNX.4.64.0711121635130.4362@racer.site>
On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 12 Nov 2007, Jon Smirl wrote:
>
> > On 11/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> >
> > > On Mon, 12 Nov 2007, Jon Smirl wrote:
> > >
> > > > jonsmirl@terra:~/foo$ git clone
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git ds
> > > > clone.....
> > >
> > > This sets up branch.master.{remote,merge} to {origin,master}.
>
> You haven't shown me that this is set correctly in your set up, and if it
> is, when it stops being correctly set up.
Running git update-server-info at the remote end fixed it.
I am using 'git push' to send changes, I though that was supposed to
update the server info automatically.
>
> Ciao,
> Dscho
>
--
Jon Smirl
jonsmirl@gmail.com
^ permalink raw reply
* Re: Cloning empty repositories, was Re: What is the idea for bare repositories?
From: Bill Lear @ 2007-11-12 17:24 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Matthieu Moy, Jan Wielemaker, git
In-Reply-To: <Pine.LNX.4.64.0711121715090.4362@racer.site>
On Monday, November 12, 2007 at 17:15:51 (+0000) Johannes Schindelin writes:
>Hi,
>
>On Mon, 12 Nov 2007, Matthieu Moy wrote:
>
>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>
>> > On Mon, 12 Nov 2007, Jan Wielemaker wrote:
>> >
>> >> I found out that cloning a empty bare repository produces nothing at
>> >> all, [...]
>> >
>> > If they are empty, what exactly do you mean to clone?
>>
>> I'd expect an empty repository, with the git remote configured
>> correctly.
>
>Yeah, right.
>
>Last time I checked, those geneticists did not clone thin air. They
>always waited until they had something to clone.
We have wanted this behavior; I don't think it's so foolish. We have
an administrator create a new bare repo for us, and we populate it by
pushing into it. It wold be nice if the administrator could create a
bare repo and we could clone from it, and push to it to populate it,
instead of cloning the bare repo from another repo that has already
been (partly) populated.
Bill
^ permalink raw reply
* Re: Cloning from kernel.org, then switching to another repo
From: Jon Smirl @ 2007-11-12 17:28 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailing List
In-Reply-To: <9e4733910711120921q651208cby1276426ccd4b5fa4@mail.gmail.com>
Actually, fetching from kernel.org first and then switching the origin
isn't helping. The host is http only since I can't get access to the
git network port. When I pushed up my local repo it ends up in one big
pack.
I do this:
git clone kernel.org
move the origin
git pull
-- it still pulls down the entire pack and takes an hour
Will this fix it?
at my remote host, first clone from kernel.org
then push my local changes?
--
Jon Smirl
jonsmirl@gmail.com
^ permalink raw reply
* Re: Deprecate git-fetch-pack?
From: Jon Loeliger @ 2007-11-12 17:29 UTC (permalink / raw)
To: Jakub Narebski; +Cc: Git List
In-Reply-To: <fh8609$umn$1@ger.gmane.org>
On Sun, 2007-11-11 at 18:16, Jakub Narebski wrote:
> > c) show-branch: The output is terrifying without explanation
>
> I agree. I would replace it by gitk, or gui (git-gui / "git gui").
I disagree; we should keep it. It is a very useful command,
and usable on systems where GUI isn't an option.
Thanks,
jdl
^ permalink raw reply
* Re: Cloning empty repositories, was Re: What is the idea for bare repositories?
From: Johannes Schindelin @ 2007-11-12 17:30 UTC (permalink / raw)
To: Bill Lear; +Cc: Matthieu Moy, Jan Wielemaker, git
In-Reply-To: <18232.35893.243300.179076@lisa.zopyra.com>
Hi,
On Mon, 12 Nov 2007, Bill Lear wrote:
> We have an administrator create a new bare repo for us, and we populate
> it by pushing into it. It wold be nice if the administrator could
> create a bare repo and we could clone from it, and push to it to
> populate it, instead of cloning the bare repo from another repo that has
> already been (partly) populated.
I don't see what is soooo hard with using git-remote in the repo you are
pushing from. It's just a "git remote add origin <url>", and you can even
use this to push right afterwards: "git push --all origin".
Besides, if you really want to work together, chances are that you do
_not_ want to start with <n> independent initial commits. So you need to
populate the repository before starting _anyway_.
Why are easy solutions so unattractive?
Ciao,
Dscho
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox