The following reply was made to PR user/6497; it has been noted by GNATS.
From: Nicholas Marriott <[email protected]>
To: "Michael W. Bombardieri" <[email protected]>
Cc: [email protected]
Subject: Re: user/6497: opencvs import does not use CVSROOT environment variable
Date: Fri, 22 Oct 2010 18:38:09 +0100
This was added by tobias in:
----------------------------
revision 1.45
date: 2008/06/20 23:00:13; author: tobias; state: Exp; lines: +4 -1
Don't parse CVS/Root during import.
ok joris
=============================================================================
I guess we want to skip CVS/Root but not CVSROOT, something like (untested):
Index: root.c
===================================================================
RCS file: /cvs/src/usr.bin/cvs/root.c,v
retrieving revision 1.46
diff -u -p -r1.46 root.c
--- root.c 21 Feb 2009 12:52:47 -0000 1.46
+++ root.c 22 Oct 2010 17:36:43 -0000
@@ -172,8 +172,11 @@ cvsroot_get(const char *dir)
if (cvs_server_active == 1)
return cvsroot_parse(dir);
- if (cvs_cmdop == CVS_OP_IMPORT)
- return NULL;
+ if (cvs_cmdop == CVS_OP_IMPORT) {
+ if ((rootstr = getenv("CVSROOT")) != NULL)
+ return (cvsroot_parse(rootstr));
+ return (NULL);
+ }
(void)xsnprintf(rootpath, MAXPATHLEN, "%s/%s", dir, CVS_PATH_ROOTSPEC);
On Fri, Oct 22, 2010 at 06:30:32AM -0700, Michael W. Bombardieri wrote:
> >Number: 6497
> >Category: user
> >Synopsis: opencvs import does not use CVSROOT environment variable
> >Confidential: yes
> >Severity: serious
> >Priority: medium
> >Responsible: bugs
> >State: open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class: sw-bug
> >Submitter-Id: unknown
> >Arrival-Date: Fri Oct 22 15:20:02 GMT 2010
> >Closed-Date:
> >Last-Modified:
> >Originator:
> >Release:
> >Organization:
> >Environment:
> System : OpenBSD 4.7
> Details : OpenBSD 4.7 (GENERIC) #112: Wed Mar 17 20:43:49 MDT
> 2010
>
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
>
> Architecture: OpenBSD.amd64
> Machine : amd64
> >Description:
> The opencvs "import" command will not work unless I explicitly use the -d
> option.
>
> This problem has been traced back to cvsroot_get(), which was prematurely
> returning for CVS_OP_IMPORT.
> I can't see why cvsroot_get() would want to ignore the import command.
> If there is a good reason for this then maybe it could be commented in the
> source code.
>
> >How-To-Repeat:
> box:~/toimport$ printenv CVSROOT
> /home/michael/cvs.dummy
> box:~/toimport$ ls
> a b
> box:~/toimport$ cvs import -m "nothing" dir0 `whoami` start
> N dir0/a
> N dir0/b
>
> No conflicts created by this import
>
> box:~/toimport$ opencvs import -m "nothing" dir1 `whoami` start
> opencvs import: No CVSROOT specified! Please use the '-d' option
> opencvs [import aborted]: or set the CVSROOT environment variable.
> box:~/toimport$ opencvs -d $CVSROOT import -m "nothing" dir1 `whoami` start
> N dir1/a
> N dir1/b
>
> No conflicts created by this import.
>
> >Fix:
> My hunch is to remove the premature return statement.
> Please ignore this PR if you believe the code is meant to be like that.
>
> Index: root.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/cvs/root.c,v
> retrieving revision 1.46
> diff -u root.c
> --- root.c 21 Feb 2009 12:52:47 -0000 1.46
> +++ root.c 22 Oct 2010 12:53:13 -0000
> @@ -172,9 +172,6 @@
> if (cvs_server_active == 1)
> return cvsroot_parse(dir);
>
> - if (cvs_cmdop == CVS_OP_IMPORT)
> - return NULL;
> -
> (void)xsnprintf(rootpath, MAXPATHLEN, "%s/%s", dir,
> CVS_PATH_ROOTSPEC);
>
> if ((fp = fopen(rootpath, "r")) == NULL) {
>
>
>
> Basic testing looks ok for local and remote repositories.
>
> box:~/toimport$ printenv CVSROOT
> /home/michael/cvs.dummy
> box:~/toimport$ opencvs import -m "nothing" dir2 `whoami` start
> N dir2/a
> N dir2/b
>
> No conflicts created by this import.
>
> # Remote repo (ssh)
> box:~/toimport$ printenv CVSROOT
> cvs-test.bom:/var/cvs
> box:~/toimport$ opencvs import -m "remove" remove `whoami` start
> N remove/b
> N remove/a
>
> No conflicts created by this import
>
>
>
> dmesg:
> OpenBSD 4.7 (GENERIC) #112: Wed Mar 17 20:43:49 MDT 2010
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
> real mem = 804192256 (766MB)
> avail mem = 770875392 (735MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xfbd3f (10 entries)
> bios0: vendor QEMU version "QEMU" date 01/01/2007
> acpi0 at bios0: rev 0
> acpi0: tables DSDT FACP APIC
> acpi0: wakeup devices
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpicpu0 at acpi0
> mpbios at bios0 not configured
> cpu0 at mainbus0: (uniprocessor)
> cpu0: QEMU Virtual CPU version 0.9.1, 2667.25 MHz
> cpu0:
> FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,NXE,LONG
> cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB
> 64b/line 16-way L2 cache
> cpu0: ITLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
> cpu0: DTLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
> pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
> pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel
> 0 wired to compatibility, channel 1 wired to compatibility
> wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK>
> wd0: 16-sector PIO, LBA48, 20480MB, 41943040 sectors
> atapiscsi0 at pciide0 channel 0 drive 1
> scsibus0 at atapiscsi0: 2 targets
> cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.9.> ATAPI 5/cdrom
> removable
> wd0(pciide0:0:0): using PIO mode 0, DMA mode 2
> cd0(pciide0:0:1): using PIO mode 0
> atapiscsi1 at pciide0 channel 1 drive 0
> scsibus1 at atapiscsi1: 2 targets
> cd1 at scsibus1 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.9.> ATAPI 5/cdrom
> removable
> cd1(pciide0:1:0): using PIO mode 0
> uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: irq 11
> piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: irq 10
> iic0 at piixpm0
> iic0: addr 0x18 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x1a 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x29 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x2b 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x48 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x49 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4a 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4b 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4c 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 48=00
> words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x4d 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4e 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 48=00
> words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> em0 at pci0 dev 3 function 0 "Intel PRO/1000MT (82540EM)" rev 0x03: irq 11,
> address 52:54:00:27:21:96
> "Qumranet Virtio Memory" rev 0x00 at pci0 dev 4 function 0 not configured
> "Qumranet Virtio Console" rev 0x00 at pci0 dev 5 function 0 not configured
> isa0 at pcib0
> isadma0 at isa0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com0: probed fifo depth: 0 bytes
> pckbc0 at isa0 port 0x60/5
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pmsi0 at pckbc0 (aux slot)
> pckbc0: using irq 12 for aux slot
> wsmouse0 at pmsi0 mux 0
> pcppi0 at isa0 port 0x61
> midi0 at pcppi0: <PC speaker>
> spkr0 at pcppi0
> fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> fd0 at fdc0 drive 0: density unknown
> fd1 at fdc0 drive 1: density unknown
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> nvram: invalid checksum
> mtrr: Pentium Pro MTRR support
> vscsi0 at root
> scsibus2 at vscsi0: 256 targets
> softraid0 at root
> root on wd0a swap on wd0b dump on wd0b
> clock: unknown CMOS layout
> syncing disks... done
> rebooting...
> OpenBSD 4.7 (GENERIC) #112: Wed Mar 17 20:43:49 MDT 2010
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
> real mem = 804192256 (766MB)
> avail mem = 770875392 (735MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xfbd3f (10 entries)
> bios0: vendor QEMU version "QEMU" date 01/01/2007
> acpi0 at bios0: rev 0
> acpi0: tables DSDT FACP APIC
> acpi0: wakeup devices
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpicpu0 at acpi0
> mpbios at bios0 not configured
> cpu0 at mainbus0: (uniprocessor)
> cpu0: QEMU Virtual CPU version 0.9.1, 2665.99 MHz
> cpu0:
> FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,NXE,LONG
> cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB
> 64b/line 16-way L2 cache
> cpu0: ITLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
> cpu0: DTLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
> pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
> pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel
> 0 wired to compatibility, channel 1 wired to compatibility
> wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK>
> wd0: 16-sector PIO, LBA48, 20480MB, 41943040 sectors
> atapiscsi0 at pciide0 channel 0 drive 1
> scsibus0 at atapiscsi0: 2 targets
> cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.9.> ATAPI 5/cdrom
> removable
> wd0(pciide0:0:0): using PIO mode 0, DMA mode 2
> cd0(pciide0:0:1): using PIO mode 0
> atapiscsi1 at pciide0 channel 1 drive 0
> scsibus1 at atapiscsi1: 2 targets
> cd1 at scsibus1 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.9.> ATAPI 5/cdrom
> removable
> cd1(pciide0:1:0): using PIO mode 0
> uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: irq 11
> piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: irq 10
> iic0 at piixpm0
> iic0: addr 0x18 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x1a 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x29 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x2b 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 words
> 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x48 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x49 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4a 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4b 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4c 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 48=00
> words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> iic0: addr 0x4d 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000
> 06=0000 07=0000
> iic0: addr 0x4e 00=00 01=00 02=00 03=00 04=00 05=00 06=00 07=00 08=00 48=00
> words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000
> vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> em0 at pci0 dev 3 function 0 "Intel PRO/1000MT (82540EM)" rev 0x03: irq 11,
> address 52:54:00:27:21:96
> "Qumranet Virtio Memory" rev 0x00 at pci0 dev 4 function 0 not configured
> "Qumranet Virtio Console" rev 0x00 at pci0 dev 5 function 0 not configured
> isa0 at pcib0
> isadma0 at isa0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com0: probed fifo depth: 0 bytes
> pckbc0 at isa0 port 0x60/5
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pmsi0 at pckbc0 (aux slot)
> pckbc0: using irq 12 for aux slot
> wsmouse0 at pmsi0 mux 0
> pcppi0 at isa0 port 0x61
> midi0 at pcppi0: <PC speaker>
> spkr0 at pcppi0
> fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> fd0 at fdc0 drive 0: density unknown
> fd1 at fdc0 drive 1: density unknown
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> nvram: invalid checksum
> mtrr: Pentium Pro MTRR support
> vscsi0 at root
> scsibus2 at vscsi0: 256 targets
> softraid0 at root
> root on wd0a swap on wd0b dump on wd0b
> clock: unknown CMOS layout
>
>
> >Release-Note:
> >Audit-Trail:
> >Unformatted: