Thu May 25 14:42:11 PDT 2006 Brendan Cully <[EMAIL PROTECTED]>
* Turn off keyword substitution when adding files to CVS targets
Since the repository is being converted, keyword substitution can only be
unintentional. This reduces the danger of false merge conflicts due to
the target modifying files in the working dir on check-in.
Thu May 25 15:18:47 PDT 2006 Brendan Cully <[EMAIL PROTECTED]>
* Synthesize missing parent directories when adding files to CVS
This does for adds what target._renameEntries does for renames. This code
is only for the CVS module; perhaps it should be relocated to target. But
I don't understand why target is doing the parent creation anyway - for
instance it is unnecessary for git and hg. They could override, but there's
also some replace logic in that routine that they'd have to reimplement.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
New patches:
[Turn off keyword substitution when adding files to CVS targets
Brendan Cully <[EMAIL PROTECTED]>**20060525214211
Since the repository is being converted, keyword substitution can only be
unintentional. This reduces the danger of false merge conflicts due to
the target modifying files in the working dir on check-in.
] {
hunk ./vcpx/cvsps.py 534
- - cmd = self.repository.command("-q", "add")
+ cmd = self.repository.command('-q', 'add', '-ko')
}
[Synthesize missing parent directories when adding files to CVS
Brendan Cully <[EMAIL PROTECTED]>**20060525221847
This does for adds what target._renameEntries does for renames. This code
is only for the CVS module; perhaps it should be relocated to target. But
I don't understand why target is doing the parent creation anyway - for
instance it is unnecessary for git and hg. They could override, but there's
also some replace logic in that routine that they'd have to reimplement.
] {
hunk ./vcpx/cvsps.py 528
+
+ def _parents(self, path):
+ from os.path import exists, join, split
+
+ parents = []
+ parent = split(path)[0]
+ while parent:
+ if exists(join(self.basedir, parent, 'CVS')):
+ break
+ parents.insert(0, parent)
+ parent = split(parent)[0]
+
+ return parents
+
+ def _addEntries(self, entries):
+ """
+ Synthesize missing parent directory additions
+ """
+
+ allnames = [e.name for e in entries]
+ newdirs = []
+ for entry in allnames:
+ for parent in [p for p in self._parents(entry) if p not in allnames]:
+ if p not in newdirs:
+ newdirs.append(parent)
+
+ newdirs.extend(allnames)
+ self._addPathnames(newdirs)
}
Context:
[update git refs/heads/master, not HEAD, when applying a changeset
Brendan Cully <[EMAIL PROTECTED]>**20060523172632
In recent versions of git the format of the HEAD file changed from a direct
pointer to a commit to an indirection through the 'master' branch. This
keeps tailor up-to-date.
]
[Test against buggy darcs patch that adds and removes the same file
[EMAIL PROTECTED]
[Recognize patch hash as darcs start-revision
[EMAIL PROTECTED]
Now it's possible to specify a specific patch hash instead of only a tag
name: tailor will use `darcs get --to-match` to fetch the first version
at bootstrap time.
]
[Don't necessarily remove an empty directory
[EMAIL PROTECTED]
Fix `CvspsWorkingDir.__maybeDeleteDirectory()` so that it does
not remove the directory when the same changeset adds other entries
to it. This fixes #49.
]
[Fix the glitch reported by #50: global name 'err' is not defined
[EMAIL PROTECTED]
[Forgot to change one variable
[EMAIL PROTECTED]
[Remove whitespace from email address in bzr revision ids (closes #48).
[EMAIL PROTECTED]
[speling fix
Brendan Cully <[EMAIL PROTECTED]>**20060511231132]
[git source: handle copy from one source to many targets
Brendan Cully <[EMAIL PROTECTED]>**20060511230816
A file can be copied to several targets in one commit. tailor
doesn't know about copies, so we file them as multiple renames for
now. This may confuse targets that very reasonably only accept a
single rename, but the alternative throws away file history.
]
[git source: allow updates across branches
Brendan Cully <[EMAIL PROTECTED]>**20060511230518
Updating from revision x to revision x+1 can cross branches that
won't be merged until later. repo.update won't allow this without
the force option. We don't always set force, in case the user has
(mistakenly) edited the working directory directly. Instead,
if plain update fails we check for dirstate modifications and
update with force if there are none.
]
[git target: don't choke on empty commit messages
Brendan Cully <[EMAIL PROTECTED]>**20060511230227]
[Skip pointless checkout after clone in hg source
Brendan Cully <[EMAIL PROTECTED]>**20060511215757]
[Emit a warning message whenever the SVN backend skips a file out of scope
[EMAIL PROTECTED]
[Simple tests for basic CVS revision numbers handling
[EMAIL PROTECTED]
[Adjust the source repository of one test
[EMAIL PROTECTED]
[Test for CVS tag-entries configuration
[EMAIL PROTECTED]
[Emit some noise when forcing CVS sticky tag
[EMAIL PROTECTED]
[Use a different extension for the old version of CVS/Entries
[EMAIL PROTECTED]
When forcing a sticky tag on each CVS entry, use '.tailor-old' instead
of simply '.old' to avoid name clashes, as CVS sometime leaves that
itself. Also, remove the old copy when done.
]
[Rename entries to names in bzr backend
[EMAIL PROTECTED]
Entries refer to ChangesetEntry, but here it's just an array of filenames.
]
[Spell fix: it's synchronize, not syncronize
[EMAIL PROTECTED]
[Better docstrings in bzr.py
[EMAIL PROTECTED]
[Fixes for bzr 0.8 release
[EMAIL PROTECTED]
Use create_branch_convenience from bzrlib to create a branch. Allow for the
root-directory to be part of a shared repository, so it can share history with
other branches.
No need to store the bzrlib objects bzrdir and branch inside BzrWorkingDir.
All operations should happen through the workingtree object.
Renamed some variables to make their intent more clear.
]
[Remove final slash from svn repository
[EMAIL PROTECTED]
[Query hg for default options
Brendan Cully <[EMAIL PROTECTED]>**20060503210511
hg looks up command options from the argument without trapping
KeyError. So whenever an option is added to an hg command, tailor
backtraces until it's been taught to pass in the new option. This
patch queries hg for the set of options for all commands, which
should provide some protection against this particular problem.
]
[hglib.py -> hg.py implies HglibWorkingDir -> HgWorkingDir
Brendan Cully <[EMAIL PROTECTED]>**20060503210444]
[TAG Version 0.9.22
[EMAIL PROTECTED]
Patch bundle hash:
4159faef8b99117d4be5a1803cda9cdf6b4f35b1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (Darwin)
iD8DBQFEdi4wIigsijWFMDIRAodrAJ469a6BD2BOUOLxDe4PH5PMGL7Q7ACeMtYb
3eMGApd5zVeHWnEHrbdszYI=
=5bvi
-----END PGP SIGNATURE-----
_______________________________________________
Tailor mailing list
[email protected]
http://lists.zooko.com/mailman/listinfo/tailor