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

Reply via email to